我正在创建许多具有不同数量切片的饼图。我已经在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还是很陌生,因此,我们将不胜感激。
谢谢!
我可以设置特定切片颜色的唯一方法是通过名称指定其他切片。由于您没有提供样本,因此我正在使用虹膜数据集进行测试。
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
上您可以命名数据集中不存在的类,因此可以使用所需的所有类来创建一个调色板。