在 R 中只更改一个饼图的颜色

Change colour of only one pie slice in R

我正在创建许多具有不同切片数量的饼图。我在 R 中创建了一个调色板,并使用十六进制代码指定了它的值。

数据框 palette 分配了 23 种颜色,这适用于我所有的饼图。

我的问题是如何将饼图的一个特定部分更改为与调色板中指定的颜色不同的颜色。因为我的饼图有不同数量的切片,所以我不能只更改 palette 数据框中的一个特定 HEX 值,因为这意味着我想要更改的颜色将始终出现在饼图的不同切片上每一次。

我的代码是这样的:

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 还很陌生,因此非常感谢任何帮助。

谢谢!

我可以设置特定切片颜色的唯一方法是按名称指定其他切片。 由于您没有提供样本,我正在使用 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 上,您可以命名数据集中不存在的 类,因此您可以创建一个包含您需要的所有 类 的调色板。