ggforce::geom_arc_bar 中的线条颜色
Line color in ggforce::geom_arc_bar
可能是一个简单的。
有没有办法消除 ggforce::geom_arc_bar 饼图中的边界线?
pie <- data.frame(
state = c('eaten', 'eaten but said you didn\'t', 'cat took it',
'for tonight', 'will decompose slowly'),
focus = c(0.2, 0, 0, 0, 0),
start = c(0, 1, 2, 3, 4),
end = c(1, 2, 3, 4, 2*pi),
amount = c(4,3, 1, 1.5, 6),
stringsAsFactors = FALSE
)
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), stat = 'pie') +
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
例如,在上图中,是消除黑色边框线还是使其颜色与填充颜色相同?
还有一个问题,是否可以只从饼的周边消除边界线?那么只保留切片的标记吗?
您可以在geom_arc_bar
中添加color = "transparent"
或color = NA
代码
library(ggforce)
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), stat = 'pie',
color = "transparent") +
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
ggplot 通常对颜色使用两个参数:
col =
和
fill =
您分配了 fill(内部),但没有处理 col(大纲)。
下面应该可以工作,我在这里指定 col=NA
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), col=NA,stat = 'pie') +
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
编辑:所以回答第二个问题 - 我真的不知道这是否可能(我对 ggforce 不太熟悉)
有鉴于此,对于您的问题的这个 'hacky' 解决方案,我提前请求原谅。但我觉得最好能提供一些东西让别人改进。
解释一下:保留原始轮廓,然后使用 geom_arc0 函数绘制与每个线段颜色相同的新轮廓
geom_arc0(aes(x0 = 0, y0 = 0, r = 1, start = start, end = end,
colour = factor(state)), data = pie, ncp = 50)
在上下文中:
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), col="black",stat = 'pie') +
geom_arc0(aes(x0 = 0, y0 = 0, r = 1, start = start, end = end,
colour = factor(state)), data = pie, ncp = 50)
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
它可能看起来有点不可靠 - 如果您增加 ncp 参数,它会向轮廓添加更多点(从而更接近完美的圆)- 我被限制为 ncp=2000。
再次抱歉,它太hacky了。
可能是一个简单的。
有没有办法消除 ggforce::geom_arc_bar 饼图中的边界线?
pie <- data.frame(
state = c('eaten', 'eaten but said you didn\'t', 'cat took it',
'for tonight', 'will decompose slowly'),
focus = c(0.2, 0, 0, 0, 0),
start = c(0, 1, 2, 3, 4),
end = c(1, 2, 3, 4, 2*pi),
amount = c(4,3, 1, 1.5, 6),
stringsAsFactors = FALSE
)
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), stat = 'pie') +
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
例如,在上图中,是消除黑色边框线还是使其颜色与填充颜色相同?
还有一个问题,是否可以只从饼的周边消除边界线?那么只保留切片的标记吗?
您可以在geom_arc_bar
color = "transparent"
或color = NA
代码
library(ggforce)
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), stat = 'pie',
color = "transparent") +
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
ggplot 通常对颜色使用两个参数:
col =
和
fill =
您分配了 fill(内部),但没有处理 col(大纲)。
下面应该可以工作,我在这里指定 col=NA
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), col=NA,stat = 'pie') +
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
编辑:所以回答第二个问题 - 我真的不知道这是否可能(我对 ggforce 不太熟悉) 有鉴于此,对于您的问题的这个 'hacky' 解决方案,我提前请求原谅。但我觉得最好能提供一些东西让别人改进。
解释一下:保留原始轮廓,然后使用 geom_arc0 函数绘制与每个线段颜色相同的新轮廓
geom_arc0(aes(x0 = 0, y0 = 0, r = 1, start = start, end = end,
colour = factor(state)), data = pie, ncp = 50)
在上下文中:
ggplot(pie) +
geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = 0, r = 1, amount = amount,
fill = state, explode = focus), col="black",stat = 'pie') +
geom_arc0(aes(x0 = 0, y0 = 0, r = 1, start = start, end = end,
colour = factor(state)), data = pie, ncp = 50)
scale_fill_brewer('', palette = 'Set1') +
coord_fixed()
它可能看起来有点不可靠 - 如果您增加 ncp 参数,它会向轮廓添加更多点(从而更接近完美的圆)- 我被限制为 ncp=2000。
再次抱歉,它太hacky了。