ShinyApp | 有料的 TBtools-Barplot 插件 - 自拆机械表始

导语

老铁邵扬,边带娃边鼓捣,快速搞出了一个精美插件!在我看来,我最关心的还是... 感觉这个插件可以拿来分析荧光定量数据?当然,这个似乎不太重要。 重要的是,后面搞大田数据,做品种性状比较时... 似乎会方便很多。-- CJ

写在前面

春节期间跟家里人聊天的时候,再一次提到了小时候的时候拆家里手表的事。然后又是对我一阵数落。孩童时的我对这个结构复杂、设计精巧的玩意充满了好奇,总是想要机会拆开看看里面到底装着什么。父母知道我的心思自然不敢把手表轻易放在外头。但机会这东西,等一等总会有的。终于还是被我逮到了机会。拆开容易,拼回去就难了。结局免不了一顿暴揍,然后被父母记到现在......手表某种程度上代表了人类制造工具的某种极致,而拆手表嘛则是小孩子极致的好奇心了。至于挨揍嘛,纯属活该了......扯远了。

一个画柱状图的插件

本来我是准备当一个安静的鸽子,等陈博士把rserver插件完善了(起码写一个可用的交互界面吧)。但,架不住博士小姐姐shawn有特别的姿势。一顿骚操作就把shiny包搞定了,加上陈博士写个网页弹出功能,shiny的最后一块拼图算是齐了。工头喊一嗓子,开工了......这次的插件主要功能是画柱状图......柱状图算是科研作图的基础,任何一个杂志随便翻翻都能看到柱状图。之前也写过几篇关于柱状图的文章检验自己对R语言的学习程度。新的一年了,正好是时候检验一下对r和ggplot2的认识又到了什么水准了。这次,我们用shiny折腾了一个柱状图。我才不会说是因为Barplot这个名字看着就会排在前面呢。如果那样子,我肯定会改名叫A barplot了,你细品,你仔细品。总之这次的插件主要能画三种图,分别是带星号标记的,带字母标记的分组柱状图和堆积柱状图。

下载地址点这里: Barplot_shiny

https://github.com/barnett874/barplot_shiny/blob/main/Barplot_shiny.plugin

PS:输入文件参考鸢尾花数据集。如果你还不清楚,直接去rstudio里输入iris就能看到了。大概类似下面的结构。

界面

先从最左边的菜单开始做起。

左边侧边栏第一个是输入数据的地方,默认CSV文件(既默认数据以半角逗号分隔)。然后选择数据是否已经整理为透视表,这个选项不常用。一般默认第一列是分组名,如果不是,第三个选项可以换一下。已经设定好会读取输入的文件的列名并自动更新到下拉菜单里。

此外,因为没有改默认设置,数据文件默认不超过5 M。

然后就是选择是分组柱状图或者是堆积图,需要星号标记或者是星号标记。这里未来会给更多的选项让你选择到底用t检验,ANOVA,还是非参数检验。此外标记默认数据服从正态分布并且满足方差齐性。未来可能把对应的检验也加进去(感觉又在给自己挖坑了)。另外字母标记对所有的可能性还是没做到遍历,这部分未来还需要改进,希望得到用户的反馈。

# t检验stat.test <- dta_barplot %>%  group_by(key) %>%  t_test(value ~ group) #遇事不决t检验stat.test <- stat.test %>%  adjust_pvalue(method = "bonferroni") %>%  add_significance("p.adj")# 两因素ANOVA(如果需要请自行魔改)anova <-  aov(value ~ group + key, dta_barplot) #ANOVAposthoc.test <-  LSD.test(anova, c('group', 'key'), p.adj = 'bonferroni')posthoc <-  posthoc.test$groups %>%  mutate(name = row.names(.)) %>%  separate(name, into = c("group", "key"), sep = ":")# 单因素ANOVAkey_name <- dta_barplot %>% distinct(key) %>% .$keyposthoc <- data.frame(  value = double(),  groups = character(),  key = character(),  group = character(),  stringsAsFactors = FALSE)for (i in 1:length(key_name)) {  anova <- dta_barplot %>%    filter(key == key_name[i]) %>%    aov(value ~ group, .)  posthoc.test <- anova %>%    LSD.test(., "group", p.adj = 'bonferroni')  posthoc <- posthoc.test$groups %>%    mutate(key = key_name[i],          group = rownames(.)) %>%    bind_rows(., posthoc)}

第三个菜单是设置颜色和主题,这里集成了ggpubr,ggprism和ggthemes的部分主题,如果你有更好的,不妨自己加到代码里。

#set themeswitch( input$slider_theme, theme_set(theme_few()), theme_set(theme_bw()), theme_set(theme_classic()), theme_set(theme_pubclean()), theme_set(theme_pubr()), theme_set(theme_minimal()), theme_set(theme_prism()))#set palettemypal <- switch( input$slider_palette, pal_npg()(9), pal_jco()(9), pal_lancet()(9), pal_locuszoom()(9), prism_fill_pal(palette = "prism_light")(9), prism_fill_pal(palette = "floral")(12), prism_fill_pal(palette = "prism_dark")(10), prism_fill_pal(palette = "viridis")(6), prism_fill_pal(palette = "warm_and_sunny")(10), prism_fill_pal(palette = "black_and_white")(9))

接着是柱子的设定,分别是柱子宽度,间隔(不一定可设置),这里设定误差线的宽度是柱宽度的1/3,如果觉得丑,请用意志力挺过去。Y轴最小值,这个也是准备取消的东西,因为变了会造成差别很大的错觉,想不从0点开始请选择箱线图。然后是柱形边框颜色和颜色填充的类别。颜色填充这块也没有覆盖到所有情况,所以,在改了在改了......

分面的选项,嗯。

其实星号标记的柱状图没有设定不分面,如果选否起始是设定为行数为1,固定y轴的分面图,本人发际线实在不够用了。

另外三个是facet里比较有意思的选项,自行体会吧。

最后就是X,Y轴标题和标签的标题(这个ggprism填了也不出东西,神秘,可能有更具体的修改选项吧)。这块没有写expression函数,估计是不支持特殊的字符和上下角标了......然后就是图的尺寸,整个图(除了字母和星号标记)的字号,字母和星号标记的尺寸,标签的位置(起始还可以有个坐标选项的,下次加上吧)和最后的x轴标签角度。

大概就介绍这么多吧,想要做的选项还有很多。例如:Y轴的tick,Y轴是否使用log_scale以及上面提到的......TBtools的界面方面,毕竟有shiny了,就这么简化着吧......

最后

当初学习R的动力就是想画个柱状图,学会后才发现如果学R只是为了画图那就买椟还珠了。R语言提供了从数据载入、清洗到统计分析再到作图的全套流程。特别是dplyr提供的整套类似thinking flow的数据处理流程和purrr简化的匿名函数,分析数据的整个流程如水流般水到渠成。如果这个小程序能够激发起你学习R的兴趣,如果你好奇R到底是怎么把数据变成图表的,索性就拆开这个包,看看里面的函数都是做什么的,最后尝试自己用R处理数据吧。希望拆开这个小插件后能在里面发现自己的好奇心。还能孩子多久......

PS:今天用别的电脑打开才发现,插件里的中文注释都是乱码......我有一句mmp不知当讲不当讲

(0)

相关推荐

  • 科研软件系列:Graphpad prism制作叠加柱状图:以细胞周期图为例

    今天这期小编想给大家一下Graphpadprism绘制叠加柱状图,细胞周期图是文章中常用的一种叠加柱状图,今天小编就以它为例,为大家讲解如何使用Graphpad prism进行绘制,话不多说,我们先来 ...

  • 手把手教你用GraphPad Prism绘制带散点的柱状图

    Figure图 科研论文中,图都标记为Figure或Fig,本公众号的主旨是为大家讲解科研过程中的作图步骤,以及相关的问题!同时,我们还将以最新发表.或各学科Top期刊文章中的结果图为例,给大家逐一讲 ...

  • [数据可视化]Seaborn简单介绍

    什么是SeabornSeaborn是基于matplotlib的图形可视化python包.它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表.Seaborn是在matplotlib的基础 ...

  • ​超前爆料!和平这个片区要拆,解决方案“有点意思”!

    和平长春道片区,是目前市内六区为数不多的平房社区. 就在南京路沿线,乐宾旁边. 最近传出要拆迁. 其实在小10年前,和平就想拆这一片区了,但是一直"拆不动". 当时天津房价已经涨起 ...

  • 商业房产Ep30 - 内行爆料: 店铺歇业装潢得全拆?

    <丽莎知道>有不少忠实的莎粉们,要么是商业房东,要么是商业租客. 他们经常都会向我们咨询有关租约的问题,希望了解怎样才能找到合适的店铺做生意,同时也希望减少租约上的纠纷. 一连30集的视频 ...

  • 插件 | 七夕福利!TBtools 用户最好的礼物

    写在前面 今天是中国传统节日 - 七夕节.可能牛郎织女故事的流传,是这一天慢慢变成了某种程度的中国情人节.每次有什么这样那样的节日,大 V 公号就发福利贴.比如大湿兄的公号 YuLabSMU ,会画各 ...

  • TBtools - 已有插件列表

    写在前面 最近我主要在忙两个事情: 了结学校里相关的一些事情,也整理下手上的资料和文件 看看是否有合适的工作 写了一段关于找工作的感悟,不过还是删了,哈哈.多数无益,回到主题. 整理资料时,突然想起, ...

  • 重磅更新!Rserver 插件 for TBtools

    写在前面 知道我的朋友,相信都有了解,元旦假期某晚凌晨,我突发起来,折腾了一个困扰我很久很久的问题,并解决了他. 2015年,TBtools 开发之前,我写过一个 Blast3GO,主要用于 GO 注 ...

  • TBtools | 插件商店(Plugin Store)面世!

    写在前面 TBtools 文稿见刊前后,我释放了 TBtools 的插件(Plugin)功能,支持插件安装和卸载(Ctrl+鼠标点击).而插件的分发则一直是通过用户使用交流群(QQ或者微信).如此下来 ...

  • Sankey Plot | 优雅地可视化 CeRNA 分析结果,TBtools 又一插件诞生

    导言:本插件作者为 李闯,一个热心的小伙伴,也是医学方向唯一的 TBtools 老铁用户.TBtools 开发本身基于我个人课题进展需要.极少考虑到医学方向的生信数据分析需求.李闯 贡献的这个插件,让 ...

  • TBtools | 插件子菜单支持~转录组~共表达分析~

    写在前面 前些日子有遇到用户问道:"TBtools上安装插件的数目是不是有限制?"....对我来说,这是比较奇怪的问题.通过远程(todesk)查看,发现是对方安装了几乎所有 TB ...

  • TBtools | 插件批量授权操作方法

    写在前面 委托运营的朋友建议,尽量还是完善一下 TBtools 的插件批量授权模式,进而方便绝大多数支持开发的用户朋友.了解的朋友可能会清楚一点,目前 TBtools 的众筹插件(需要授权)是一机一插 ...