ggplot显示因子级别的相同颜色

时间:2016-03-03 19:56:19

标签: r ggplot2

如何让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="") + ...

plot1 plot2

1 个答案:

答案 0 :(得分:10)

只需使用MyPalettescale_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)

enter image description here

enter image description here