Цвет линии в 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()

Цвет линии в ggforce::geom_arc_bar

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
756
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете добавить 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.

Еще раз извиняюсь, что это так хакерски.

Спасибо за ответы. Я добавил к своему вопросу еще один момент, а именно: можно ли убрать границу только с периметра пирога? То есть остается только разграничение срезов?

dan 22.05.2019 00:57

две вещи. 1. Я не уверен сразу, как решить эту вторую проблему. 2. Хороший график обычно означает попытку отобразить минимальное количество информации, чтобы передать мысль. Я не уверен, какова цель этого изменения, но я бы посоветовал вам подумать, как это поможет в интерпретации рисунка.

JMilner 22.05.2019 01:03

Другие вопросы по теме