Вероятно, простой.
Есть ли способ убрать граничную линию на круговой диаграмме 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()
Например, на графике выше либо удалить черную линию границы, либо сделать ее цвет таким же, как цвет заливки?
И еще вопрос, можно ли убрать линию границы только с периметра пирога? То есть остается только разграничение срезов?
Вы можете добавить color = "transparent"
или color = NA
внутри geom_arc_bar
Код
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 =
Вы назначили заливку (внутреннюю), но не разобрались с 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) В свете этого заранее прошу прощения за это очень "хакерское" решение вашей проблемы. Но я чувствовал, что было бы лучше предложить что-то другим для улучшения.
Чтобы объяснить: сохраните исходный контур, но затем нарисуйте новый контур того же цвета, что и каждый сегмент, используя функцию 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.
Еще раз извиняюсь, что это так хакерски.
две вещи. 1. Я не уверен сразу, как решить эту вторую проблему. 2. Хороший график обычно означает попытку отобразить минимальное количество информации, чтобы передать мысль. Я не уверен, какова цель этого изменения, но я бы посоветовал вам подумать, как это поможет в интерпретации рисунка.
Спасибо за ответы. Я добавил к своему вопросу еще один момент, а именно: можно ли убрать границу только с периметра пирога? То есть остается только разграничение срезов?