前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关键时刻还得看咱生信工程师

关键时刻还得看咱生信工程师

作者头像
简说基因
发布2022-11-11 16:22:16
3380
发布2022-11-11 16:22:16
举报
文章被收录于专栏:简说基因

最近在线绘图网站有点火,连续有文章发表出来,有人高呼,生信工程师要失业了,这种想法好傻好天真。

这不,问题来了。

正好借此解决问题的机会,科普一下为何不能过度依赖网站,而是应该把基础打好,特别是从业人员。

问题是这样的,有朋友在某网站画一个雷达图,她的数据是:

代码语言:javascript
复制
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包的帮助:

代码语言:javascript
复制
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 个参数用来设置圆圈:

  • grid.min,最小值,即最小的圆圈代表的值
  • gird.mid,中间值,即中间圆圈代表的值
  • grid.max,最大值,即最外层圆圈代表的值

这 3 个值定义好之后,数据表中的值就可以在雷达图上找到自己的位置了。

默认情况下:

  • grid.min = 0
  • grid.mid = 0.5
  • gird.max = 1

这表示ggradar默认是为归一化数据作图的,而输入数据没有归一化,所以报错了。

找到了原因,解决方法也就有了:

  1. 将数据归化,然后画图
  2. 改默认参数,然后画图

我们这里通过改默认参数来画图:

代码语言:javascript
复制
library(ggradar)

ggradar(tb, 
        grid.min = 1,
        grid.mid = 15,
        grid.max = 30, 
        values.radar = c(1,15,30)
        )

非常丝滑。

ggradar包还有非常多的参数可用于定制雷达图,比如调整各种线条的颜色以及字体大小等,可以根据需要进行修改。

在线工具有时候不靠谱,关键时刻还是需要线下工具(人)。

我最后把在 Rstudio 里面用 ggradar 画图的代码给朋友看,她惊呼:天哪,就这么简单吗,难道我真要学 R ?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档