Изменить цвет только одного среза p ie в R - PullRequest
1 голос
/ 23 февраля 2020

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

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

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

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

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). Это изменяет правильный срез, но удаляет цвет с остальной части p ie.

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

Спасибо!

1 Ответ

2 голосов
/ 24 февраля 2020

Единственный способ установить цвет определенного среза c - указать другие по имени. Я использую набор данных iris для тестирования, поскольку вы не предоставили образец.

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 вы можете назвать классы, которых нет в вашем наборе данных, чтобы вы могли создать палитра со всеми необходимыми классами.

...