Цвет линии в ggforce :: geom_arc_bar - PullRequest
1 голос
/ 21 мая 2019

Возможно, простой.

Есть ли способ устранить граничную линию в круговой диаграмме 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()

enter image description here

Например, на приведенном выше графике либо удалить черную границу, либо сделать ее цвет таким же, как цвет заливки?

И еще вопрос, возможно ли убрать границу только по периметру пирога? То есть остается только разметка ломтиков?

Ответы [ 2 ]

2 голосов
/ 21 мая 2019

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.

Снова извиняюсь за то, что он такой хакерский.

2 голосов
/ 21 мая 2019

Вы можете добавить color = "transparent" или color = NA внутри geom_arc_bar

enter image description here

код

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()
...