【问题标题】:Generate ggplot2 boxplot with different colours for multiple groups为多个组生成具有不同颜色的 ggplot2 箱线图
【发布时间】:2013-04-08 05:15:04
【问题描述】:

我对 R 和 ggplot 还很陌生。

我正在尝试生成按两个变量排序的箱线图。就我而言,物种和实验。 到目前为止我通过使用得到了什么

ggplot(DF, aes(Species, Protein, fill=Experiment, dodge=Experiment)) +
    stat_boxplot(geom ='errorbar')+
    geom_boxplot()

是我的物种的箱线图,每个物种有 2 个条形图,每个实验一个。

我现在的问题是,是否可以通过这种方式改变颜色,让每个物种有不同的颜色,比如说,这些颜色的不同阴影用于实验?

比方说,第一个物种会有一个深蓝色和浅蓝色的条,第二个是一个深绿色和浅绿色的条,等等。

数据是csv文件的形式,如下所示:

Experiment,Species,Protein
Spring,D_strigosa,5.107767364
Spring,D_strigosa,8.288980741
Spring,D_strigosa,7.537376567
Spring,D_strigosa,4.811744241
Spring,D_strigosa,9.559043454
Spring,M_cavernosa,13.66759289
Spring,M_cavernosa,23.54880195
Spring,M_cavernosa,11.00790037
Spring,M_cavernosa,13.70597973
Spring,M_cavernosa,12.26970906
Spring,M_faveolata,9.559043454
Spring,M_faveolata,4.135860474
Spring,M_faveolata,4.557306615
Spring,M_faveolata,7.621872315
Spring,M_faveolata,6.016859956
Spring,M_annularis,6.294920733
Spring,M_annularis,5.163371831
Spring,M_annularis,2.177243143
Spring,M_annularis,3.55966551
Autumn,D_strigosa,3.709978392
Autumn,D_strigosa,7.192777836
Autumn,D_strigosa,5.31544441
Autumn,D_strigosa,6.578602058
Autumn,D_strigosa,5.610085559
Autumn,M_cavernosa,11.64182554
Autumn,M_cavernosa,10.44968102
Autumn,M_cavernosa,9.377389318
Autumn,M_cavernosa,10.99346107
Autumn,M_cavernosa,11.5676896
Autumn,M_faveolata,4.638054165
Autumn,M_faveolata,7.191664953
Autumn,M_faveolata,6.981827102
Autumn,M_faveolata,6.386452477
Autumn,M_annularis,4.709770404
Autumn,M_annularis,3.554071459
Autumn,M_annularis,4.596686351
Autumn,M_annularis,3.530585628

【问题讨论】:

    标签: r ggplot2 boxplot


    【解决方案1】:

    您应该将interaction() 用于fill=,并在interaction() 中同时提供SpeciesExperiment。然后使用scale_fill_manual(),您可以为您需要的颜色设置values=(颜色数量对应于箱线图的数量)。颜色顺序首先是AutumnSpecies 的颜色,然后是SpringSpecies 的颜色。

    ggplot(DF, aes(Species, Protein, fill=interaction(Species,Experiment), dodge=Experiment)) +
      stat_boxplot(geom ='errorbar')+
      geom_boxplot()+
      scale_fill_manual(values=c("blue","green","red","cyan",
                 + "darkblue","darkgreen","darkred","darkcyan"))
    

    【讨论】:

    • @Didzis Elferts,感谢这个有用的例子!想问:1.是否可以增加物种之间的空间(我使用我的数据得到的情节太密集了); 2.“实验”如何使用颜色代码(图中2种不同颜色(AutumnSpring),每个物种都一样)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2021-05-27
    相关资源
    最近更新 更多