一个小栗子。
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)
数据类型:
- 第一列为品种
- 第二列为性状
- 第三列为值。
> 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()
效果: