r - 是否可以在组合线图和点图上更改颜色和形状,同时保留每个图表一个图例?

标签 r colors ggplot2 legend shapes

使用以下数据框:

day <- gl(8,1,48,labels=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Avg"))
day <- factor(day, level=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Avg"))
month<-gl(3,8,48,labels=c("Jan","Mar","Apr"))
month<-factor(month,level=c("Jan","Mar","Apr"))

snow<-gl(2,24,48,labels=c("Y","N"))
snow<-factor(snow,levels=c("Y","N"))
count <-c(.94,.95,.96,.98,.93,.94,.99,.9557143,.82,.84,.83,.86,.91,.89,.93,.8685714,1.07,.99,.86,1.03,.81,.92,.88,.9371429,.94,.95,.96,.98,.93,.94,.99,.9557143,.82,.84,.83,.86,.91,.89,.93,.8685714,1.07,.99,.86,1.03,.81,.92,.88,.9371429)
d <- data.frame(day=day,count=count,month=month,snow=snow)

我想更改下图中按月份分组的线条和点的颜色和形状:

library(ggplot2)
library(scales)

ggplot(data=d[d$day=="Avg",],aes(x=day, y=count, fill=month,group=month,label=month),show_guide=F)+
facet_wrap(~snow,ncol=1,scales="free")+
geom_line(data=d[d$day!="Avg",],aes(x=day, y=count, group=month, colour=month), show_guide=F)+
scale_x_discrete(limits=levels(d$day))+
scale_y_continuous(labels = percent)+
geom_point(aes(colour = month),size = 4,position=position_dodge(width=1.2))+
expand_limits(y=0)

enter image description here

  1. 如何更改折线图和点的颜色和形状(我意识到存在很多选项),以便它们仍然按月份分组?

注意:每个图表都需要具有适当形状/颜色的单个图例(如果您能够弄清楚如何在不使用 grid.arrange 的情况下为每个图表创建图例,则会加分)。 p>

最佳答案

我相信@thunk 是对的,但是您的代码还存在一些问题。 (1) 您指定 fill,但随后您不使用任何采用 fill 的几何对象。 (2) 您在第一个 ggplot 中设置了默认美学,然后在您的 geom 中不必要地重置了它们。 (3) 您希望形状发生变化,但您从未指定形状美学。

我认为这给出了你想要的:

ggplot(data=d[d$day=="Avg",],
       aes(x=day, y=count, color=month, group=month,
           label=month, shape = month), show_guide=F)+
    facet_wrap(~snow, ncol=1, scales="free")+
    geom_line(data=d[d$day!="Avg", ])+
    scale_x_discrete(limits=levels(d$day))+
    scale_y_continuous(labels = percent)+
    geom_point(size = 4, position = position_dodge(width=1.2))+
    scale_color_manual(values = c("dodgerblue4", "firebrick4", "forestgreen")) +
    expand_limits(y=0)

fixed plot

在初始 ggplot() 的第一个 aes 调用中,我们指定 colorshape 都不同按月。然后,在 geom_linegeom_point 调用中,我们不需要再说一遍。添加 scale_color_manual() 让我们可以选择我们想要的任何颜色(如果您想指定形状,添加 scale_shape_manual() 就可以了)。

希望这有帮助!

关于r - 是否可以在组合线图和点图上更改颜色和形状,同时保留每个图表一个图例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551802/

相关文章:

r - 如何用 NA 替换整行 data.table?

html - 如何填充导航元素的背景颜色

r - ggplot2:每层单独的图例

r - 如何混合 2 个或多个调色板以显示组合颜色值

r - 使用 R 中的 xts 对象列表的段错误

python - 创建渐变色图 - matplotlib

iphone - 基于自定义线性渐变的UILabel文本颜色

r - 尝试在 R 中加载库(ggplot2)时出错

r - 用ggplot2中的横杆连接意味着

r - 如何解决 beamer_presentation 中的错误,文件不存在?