将多个性状画一张箱线图上R实战

2019-11-19 16:14:00 浏览数 (1)

一个小栗子。

1. 示例数据

数据描述: 第一列是品种 其它列为观测值,y1,y2…

目的: 相对每一个性状做箱线图,同时显示在一个图上面,横坐标为性状。

代码语言:javascript复制
> head(dd)
    Cul    y1    y2    y3 y4  y5  y6  y7  y8
1 80001 0.334 0.405 0.358 29 130 239 420 630
2 80002 0.348 0.393 0.365 24 107 242 410 600
3 80004 0.354 0.429 0.379 19  82 180 300 500
4 80005 0.335 0.408 0.363 46 168 301 510 700
5 80008 0.322 0.372 0.332 33 135 271 470 670
6 80026 0.359 0.450 0.392 30 132 258 390 570

效果图:

2. 操作方法

2.1 转化数据

使用data.table的melt函数,将数据进行转化:

代码语言:javascript复制
re = melt(dd,id = 1)

数据类型:

  • 第一列为品种
  • 第二列为性状
  • 第三列为值。
代码语言:javascript复制
> head(re)
    Cul variable value
1 80001       y1 0.334
2 80002       y1 0.348
3 80004       y1 0.354
4 80005       y1 0.335
5 80008       y1 0.322
6 80026       y1 0.359
2.2 作图
代码语言:javascript复制
boxplot(value ~ variable,re)

效果:

3. 进阶

想要更好看的图,可以看看ggplot2的操作:

代码语言:javascript复制
library(ggplot2)
ggplot(re, aes(x=variable, y=value, fill=variable))   
  geom_boxplot()

效果:

0 人点赞