如何为具有稳定映射的ggplot 2中的分类变量分配颜色?

如何为具有稳定映射的ggplot 2中的分类变量分配颜色?

在过去的一个月里我一直在跟上R的步伐。

以下是我的问题:

在具有稳定映射的ggplot 2中,为分类变量分配颜色的好方法是什么?我需要一组具有不同子集和不同数量的分类变量的图形的一致颜色。

例如,

plot1 <- ggplot(data, aes(xData, yData,color=categoricaldData)) + geom_line()

哪里categoricalData有5个等级。

然后

plot2 <- ggplot(data.subset, aes(xData.subset, yData.subset, 
                                 color=categoricaldData.subset)) + geom_line()

哪里categoricalData.subset有三个等级。

然而,在这两个集合中的一个特定级别将以不同的颜色结束,这使得在一起阅读图表变得更加困难。

是否需要在数据帧中创建颜色向量?或者是否有其他方法为类别分配特定的颜色?


慕码人8056858
浏览 2088回答 3
3回答

慕森卡

对于简单的情况,如操作中的确切例子,我同意蒂埃里的答案是最好的。但是,我认为指出另一种方法是有用的,当您试图在多个数据帧之间维护一致的颜色方案时,这种方法变得更容易不所有这些都是通过减去单个大数据帧获得的。如果从单独的文件中提取因素级别,而不是每个文件中出现所有的因素级别,那么管理多个数据帧中的因素级别就会变得单调乏味。解决这一问题的一种方法是创建一个自定义的手动颜色刻度,如下所示:#Some&nbsp;test&nbsp;datadat&nbsp;<-&nbsp;data.frame(x=runif(10),y=runif(10), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grp&nbsp;=&nbsp;rep(LETTERS[1:5],each&nbsp;=&nbsp;2),stringsAsFactors&nbsp;=&nbsp;TRUE)#Create&nbsp;a&nbsp;custom&nbsp;color&nbsp;scalelibrary(RColorBrewer)myColors &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<-&nbsp;brewer.pal(5,"Set1")names(myColors)&nbsp;<-&nbsp;levels(dat$grp)colScale&nbsp;<-&nbsp;scale_colour_manual(name&nbsp;=&nbsp;"grp",values&nbsp;=&nbsp;myColors)然后根据需要将颜色刻度添加到情节中:#One&nbsp;plot&nbsp;with&nbsp;all&nbsp;the&nbsp;datap&nbsp;<-&nbsp;ggplot(dat,aes(x,y,colour&nbsp;=&nbsp;grp))&nbsp;+&nbsp;geom_point()p1&nbsp;<-&nbsp;p&nbsp;+&nbsp;colScale#A&nbsp;second&nbsp;plot&nbsp;with&nbsp;only&nbsp;four&nbsp;of &nbsp;the&nbsp;levelsp2&nbsp;<-&nbsp;p&nbsp;%+%&nbsp;droplevels(subset(dat[4:10,]))&nbsp;+&nbsp;colScale这样,您就不需要记住或检查每个数据帧,以确保它们具有适当的级别。

慕妹3242003

最简单的解决方案是在设置子集之前将分类变量转换为一个因子。底线是,您需要一个因子变量,在您的所有子集中具有完全相同的水平。library(ggplot2)dataset&nbsp;<-&nbsp;data.frame(category&nbsp;=&nbsp;rep(LETTERS[1:5],&nbsp;100),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;rnorm(500,&nbsp;mean&nbsp;=&nbsp;rep(1:5,&nbsp;100)),&nbsp;y&nbsp;=&nbsp;rnorm(500,&nbsp;mean&nbsp;=&nbsp;rep(1:5,&nbsp;100)))dataset$fCategory&nbsp;< &nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;factor(dataset$category)subdata&nbsp;<-&nbsp;subset(dataset,&nbsp;category&nbsp;%in%&nbsp;c("A",&nbsp;"D",&nbsp;"E"))带有字符变量ggplot(dataset,&nbsp;aes(x&nbsp;=&nbsp;x,&nbsp;y&nbsp;=&nbsp;y,&nbsp;colour&nbsp;=&nbsp;category))&nbsp;+&nbsp;geom_point()ggplot(subdata,&nbsp;aes(x&nbsp;=&nbsp;x,&nbsp;y&nbsp;=&nbsp;y,&nbsp;colour&nbsp;=&nbsp;category))&nbsp;+&nbsp;geom_point()带因子变量ggplot(dataset,&nbsp;aes(x&nbsp;=&nbsp;x,&nbsp;y&nbsp;=&nbsp;y,&nbsp;colour&nbsp;=&nbsp;fCategory))&nbsp;+&nbsp;geom_point()ggplot(subdata,&nbsp;aes(x&nbsp;=&nbsp;x,&nbsp;y&nbsp;=&nbsp;y,&nbsp;colour&nbsp;=&nbsp;fCategory))&nbsp;+&nbsp;geom_point()
打开App,查看更多内容
随时随地看视频慕课网APP