最近在线绘图网站有点火,连续有文章发表出来,有人高呼,生信工程师要失业了,这种想法好傻好天真。
这不,问题来了。
正好借此解决问题的机会,科普一下为何不能过度依赖网站,而是应该把基础打好,特别是从业人员。
问题是这样的,有朋友在某网站画一个雷达图,她的数据是:
kable(tb)
Group | CELL CYCLE | HIPPO | MYC | NOTCH | PI3K | RTK-RAS | TGF-β | TP53 | WNT |
---|---|---|---|---|---|---|---|---|---|
Metastasis | 9 | 30 | 7 | 29 | 15 | 25 | 9 | 17 | 30 |
NonMetastasis | 1 | 23 | 5 | 21 | 11 | 25 | 10 | 16 | 19 |
结果出错了,报错信息如下:
Error: 'plot.data' contains value(s) > grid.max
凭经验,网站后台画图调用的是ggradar
这个包,错误信息的意思是:
用于画图的数据表包含大于 grid.max 这个参数的值。
我们查看一下ggradar
包的帮助:
ggradar(
plot.data,
base.size = 15,
font.radar = "sans",
values.radar = c("0%", "50%", "100%"),
axis.labels = colnames(plot.data)[-1],
grid.min = 0,
grid.mid = 0.5,
grid.max = 1,
...
可以看到,grid.max
的默认值是 1,如果用于画图的数据表中有值大于 1,自然就会出错。
雷达图类似于一个蜘蛛网,由各种圆圈以及连线组成,下列 3 个参数用来设置圆圈:
这 3 个值定义好之后,数据表中的值就可以在雷达图上找到自己的位置了。
默认情况下:
这表示ggradar
默认是为归一化数据作图的,而输入数据没有归一化,所以报错了。
找到了原因,解决方法也就有了:
我们这里通过改默认参数来画图:
library(ggradar)
ggradar(tb,
grid.min = 1,
grid.mid = 15,
grid.max = 30,
values.radar = c(1,15,30)
)
非常丝滑。
ggradar
包还有非常多的参数可用于定制雷达图,比如调整各种线条的颜色以及字体大小等,可以根据需要进行修改。
在线工具有时候不靠谱,关键时刻还是需要线下工具(人)。
我最后把在 Rstudio 里面用 ggradar 画图的代码给朋友看,她惊呼:天哪,就这么简单吗,难道我真要学 R ?