上个月我一直在加快 R 的学习速度。
这是我的问题:
在 ggplot2 中为具有稳定映射的分类变量分配颜色的好方法是什么?我需要在具有不同子集和不同数量的 calcategories 变量的一组图表中保持一致的颜色。
例如,
plot1 <- ggplot(data, aes(xData, yData,color=categoricaldData)) + geom_line()
where categoricalData
有 5 个级别。
And then
plot2 <- ggplot(data.subset, aes(xData.subset, yData.subset,
color=categoricaldData.subset)) + geom_line()
where categoricalData.subset
有 3 个级别。
但是,两组中的特定级别最终会具有不同的颜色,这使得将图表放在一起阅读变得更加困难。
我需要在数据框中创建颜色向量吗?或者还有其他方法可以为类别分配特定颜色吗?
对于简单的情况,比如OP中的确切例子,我同意蒂埃里的答案是最好的。但是,我认为指出另一种方法很有用,当您尝试在多个数据帧中保持一致的颜色方案时,该方法会变得更容易not所有这些都是通过对单个大数据框进行子集化而获得的。如果从单独的文件中提取多个数据帧中的因子水平,并且并非所有因子水平都出现在每个文件中,则管理多个数据框中的因子水平可能会变得乏味。
解决此问题的一种方法是创建自定义手动色阶,如下所示:
#Some test data
dat <- data.frame(x=runif(10),y=runif(10),
grp = rep(LETTERS[1:5],each = 2),stringsAsFactors = TRUE)
#Create a custom color scale
library(RColorBrewer)
myColors <- brewer.pal(5,"Set1")
names(myColors) <- levels(dat$grp)
colScale <- scale_colour_manual(name = "grp",values = myColors)
然后根据需要将色标添加到绘图上:
#One plot with all the data
p <- ggplot(dat,aes(x,y,colour = grp)) + geom_point()
p1 <- p + colScale
#A second plot with only four of the levels
p2 <- p %+% droplevels(subset(dat[4:10,])) + colScale
第一个图如下所示:
第二个图如下所示:
这样您就不需要记住或检查每个数据框来查看它们是否具有适当的级别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)