Изменить цвет только одного куска пирога в R

Я создаю множество круговых диаграмм с различным количеством секторов. Я создал цветовую палитру в R и указал ее значения, используя шестнадцатеричные коды.

Фрейму данных palette назначено 23 цвета, и это прекрасно работает со всеми моими круговыми диаграммами.

Мой вопрос заключается в том, как я могу изменить один конкретный фрагмент круговой диаграммы на цвет, отличный от указанного в моей палитре. Поскольку мои круговые диаграммы имеют различное количество секторов, я не могу просто изменить одно конкретное шестнадцатеричное значение в моем фрейме данных palette, так как это означало бы, что цвет, который я хотел бы изменить, всегда будет каждый раз появляться на разных сегментах круговых диаграмм.

Мой код выглядит так:

ggplot(Tally_5000_7499_Sorted, aes(x = "", y = n1, fill = Haplogroup)) +
  geom_bar(stat = "identity", width = 1, size = 1) +
  coord_polar("y", start = 0, direction = -1)+
  scale_fill_manual(values = palette)+
  theme_void()+
  theme(axis.line = element_blank(), axis.ticks = element_blank(), plot.title = element_text(hjust = 0.5))+
  labs(title = "Haplogroup Proportion, 5000-7499 BC")+
  ggsave("5000_7499pie2.png", dpi = 1000)

У меня есть цвет, который я хотел бы указать: #4f574e. Я добавил этот цвет во фрейм данных: Other = c("#4f574e)

Я пытался использовать scale_fill_manual(values = palette, "Other" = Other). Это изменяет правильный фрагмент, но удаляет цвет с остальной части пирога.

Я считаю, что решение, вероятно, простое, но я новичок в R, поэтому любая помощь будет очень признательна.

Спасибо!


person RightSo    schedule 23.02.2020    source источник
comment
Можете ли вы предоставить воспроизводимый пример вашего набора данных? см. здесь: stackoverflow .com/questions/5963269/   -  person dc37    schedule 24.02.2020


Ответы (1)


Единственный способ, которым я мог установить цвет определенного фрагмента, — это указать остальные по имени. Я использую набор данных радужной оболочки для тестирования, поскольку вы не предоставили образец.

data(iris)
library(ggplot2)

ggplot(iris, aes(x = "", y = Petal.Width, fill = Species)) +
  geom_bar(stat = "identity", width = 1, size = 1) +
  coord_polar("y", start = 0, direction = -1) +
  scale_fill_manual(values=c("versicolor" = "blue", "virginica" = "purple", "setosa" = "red", "This class doesn't exist" = "black")) +
  theme_void() +
  theme(axis.line = element_blank(), axis.ticks = element_blank(), plot.title = element_text(hjust = 0.5))

Обратите внимание, что в scale_fill_manual вы можете назвать классы, которых нет в вашем наборе данных, чтобы вы могли создать палитру со всеми необходимыми классами.

person Rita Menezes    schedule 23.02.2020