如何让ggplot始终对因子使用相同的颜色映射。例如:
library(ggplot)
## Filter for visual simplification
diamonds2 <- diamonds[1:10,]
ggplot(diamonds2, aes(carat, price, color = cut)) + geom_point()
## Now filtering removes some levels of cut
diamonds3 <- diamonds[1:5,]
ggplot(diamonds3, aes(carat, price, color = cut)) + geom_point()
在第一个散点图因子级别&#34; Fair&#34;是红色的。在第二张图中,因子水平&#34; Good&#34;变红了。 我希望保留映射,无论过滤是否删除因子级别,以便&#34; Fair&#34;总是映射到红色等等。
实际上我的ggplot要复杂得多。我的原始因素有11个级别。
MyPalette <- c("#5DD0B9", "#E1E7E9", "#1f78b4", "#a6cee3", "#de77ae", "#c51b7d", "#8e0152", "#6a3d9a", "#fbdf6f", "#ff7f00", "#fff99")
我在ggplot中提到
... scale_fill_manual(values = MyPalette, name="") + ...
答案 0 :(得分:10)
只需使用MyPalette
和scale_colour_manual()
的命名向量:
MyPalette <- c(Fair = "#5DD0B9", Good = "#E1E7E9", "Very Good" = "#1f78b4", Premium = "#a6cee3", Ideal = "#de77ae")
ggplot(diamonds2, aes(carat, price, color = cut)) + geom_point() +
scale_colour_manual(values = MyPalette)
ggplot(diamonds3, aes(carat, price, color = cut)) + geom_point() +
scale_colour_manual(values = MyPalette)