草庐IT

复现《nature communications》散点小提琴图+蜜蜂图

KS科研分享与服务 2023-03-28 原文

今天我们学做一下NC文章的小提琴图,有小提琴图,也有散点,其实看过之前系列文章的人如果能够联想,可以想到这个图是(ggplot分组散点图-坐标轴截断-添加四分位图-显著性检验)和(ggplot批量绘制小提琴图并添加趋势连线)的结合。只不过这篇文章的图有个特点是散点分布和小提琴图形状一致,在画散点的时候利用geom_quasirandom 代替geom_jitter即可。

image.png
image.png

原文提供了原始作图数据,可去官网下载。

示例数据和注释代码已上传群文件,免费获取可加群!

作图:

读入数据

setwd("D:/KS项目/复现NC")
A <- read.csv("Fig3f.csv", header = T)
A$Integrated.density <- 0.001*A$Integrated.density

library(ggplot2)
library(ggbeeswarm)
library(ggpubr)
A$Biological.replicate <- as.factor(A$Biological.replicate)

计算平均值、sd等:

library(dplyr)
B <- A %>% 
  group_by(Treatment) %>% 
  mutate(upper =  quantile(Integrated.density, 0.75),
         lower = quantile(Integrated.density, 0.25),
         mean = mean(Integrated.density),
         median = median(Integrated.density),
         sd = sd(Integrated.density))

ggplot作图:

ggplot(A,aes(x=Treatment,y=Integrated.density))+
  geom_violin(width =0.8,fill='#EDEDED',color='#EDEDED')+
  geom_quasirandom(aes(color=Biological.replicate),width = 0.4,size=2.5)+
  scale_color_manual(name = 'Rep.',
                     values = c('#FFD7A8','#F2A9A9','#BAB099'),
                     labels = c('1','2','3'))+ 
  theme_classic()+
  labs(x=" ",
       y=expression('Integrated density (x'~10^3~')'))+ 
  theme(axis.title.y = element_text(colour = 'black',size = 16),
        axis.text = element_text(colour = 'black',size = 14),
        axis.line = element_line(size = 1),
        legend.title = element_text(size = 14),
        legend.text = element_text(size = 14))+
  guides(color=guide_legend(override.aes = list(size=4)))+
  geom_errorbar(data=B, aes(ymin = mean-sd, 
                            ymax = mean+sd),width = 0.2,size=0.5)+
  stat_summary(fun = "mean",
               geom = "crossbar",
               mapping = aes(ymin=..y..,ymax=..y..),
               width=0.4,
               size=0.3)+
  stat_summary(aes(fill=Biological.replicate), geom="point",
               fun = mean, shape=21, size=6,stroke=1.3)+
  scale_fill_manual(values = c('#FFAF51','#E65454','#756233'))+
  geom_signif(data=A,
             aes(xmin=1, xmax=2, annotations="0.3008367", 
                 y_position=310),
             textsize = 5,tip_length = c(0, 0),
             manual=TRUE, size = 0.5)+
  guides(fill=guide_legend(title = 'Mean'))
image.png

结果基本是一致的,不同之处在于误差线,我是按照mean±sd,和原文有出入。其次Mean的图例,这里没有修改,不知有啥好办法,原文只有一个圈,其实用annotate函数可以加上。

更多精彩请关注我的公众号《KS科研分享与服务》

有关复现《nature communications》散点小提琴图+蜜蜂图的更多相关文章

  1. micropython复现经典单片机项目(二)可视化音频 频谱解析(基本搞定) - 2

    本人是音乐爱好者,从小就特别喜欢那个随着音乐跳动的方框效果,就是这个:arduino上一大把对,我忍你很久了,我就想用mpy做,全网没有,行我自己研究。果然兴趣是最好的老师,我之前有篇博客专门讲音频,有兴趣的可以回顾一下。提到可视化频谱,必然绕不开fft,大学学过这玩意,当时一心玩,老师讲的一个字都么听进去,网上教程简略扫了一下,大该就是把时域转频域的工具,我大mpy居然没有fft函数,奶奶的,先放着。音频信息如何收集?第一种傻瓜式的ADC,模拟转数字,原始粗暴,第二种,I2S库,我之前博客有讲过,数据是PCM编码。然后又去学PCM编码,一学豁然开朗,舒服,以代码为例:audio_in=I2S

  2. Wordpress漏洞复现 - 2

    漏洞复现cms漏洞环境搭建漏洞复现cms1.内容管理系统(contentmanagementsystem,CMS),是一种位于WEB前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。2.常见的cms系统国外的:Wordpress,Drupal,Joomla,这是国外最流行的3大CMS。国内则是DedeCMS和帝国,PHPCMS等。漏洞环境搭建一、

  3. javascript - 带有图例和其他颜色的 Google Charts API 散点图 - 2

    我有一个例子://LoadtheVisualizationAPIandthepiechartpackage.google.load('visualization','1.0',{'packages':['corechart']});//SetacallbacktorunwhentheGoogleVisualizationAPIisloaded.google.setOnLoadCallback(drawChart1);//Callbackthatcreatesandpopulatesadatatable,//instantiatesthepiechart,passesinthedataa

  4. javascript - 以编程方式为 Highcharts 散点图上的某个点触发点击事件 - 2

    实际上,我的需求很小,其中有一个散点图,其中包含点列表和下拉列表。当我从下拉列表中选择一个项目时,应该触发其相应的数据点点击。当我在图表上选择一个数据点时,必须执行一些操作并且下拉列表应该根据选择进行更新。我们有什么办法可以做到这一点吗?我试过firePointClick,事件未定义,我希望事件与手动点击发生时我们得到的事件相同,还有其他方法吗?或任何改进 最佳答案 它不是API的一部分,但可以使用名为firePointEvent的内部API函数来完成:chart.series[0].data[0].firePointEvent('

  5. javascript - 如何偏移散点图中的轴? - 2

    我想在散点图中的数据点周围、极值点和轴之间留出一点额外空间。Chart.jsdocumentation列出了据称常见的offset属性,这听起来和我想要的完全一样,但它似乎只适用于水平标记轴(代码片段的前半部分)。它对散点图(下半部分)没有任何作用。我是不是做错了什么,或者这只是不受支持?解决方法是什么?varoptions,ctx;options={type:'line',data:{labels:[0,1,2],datasets:[{data:[0,1,0]}]},options:{scales:{xAxes:[{offset:true}],yAxes:[{offset:true}

  6. javascript - Google Visualization API - 一张图表上的折线图和散点图 - 2

    有谁知道是否可以使用GoogleVisualizationsGallery中的默认Google散点图来绘制一个散点图,该散点图既有一个仅包含点的系列,一个具有最佳拟合线的系列,并在此之上图表中的一组线表示限制。即+/-20%等我们需要的图表其实是一个ControlChart在图表上显示多个系列和每个系列的单独格式。即一些系列只有点其他系列有一条最适合的线。有人知道已经使用GoogleVisualizationAPI完成的控制图吗? 最佳答案 在使用googlevisualizationapi一段时间并在网上搜索后,我不得不说这里的答

  7. stable-diffusion官方版本地复现手册(2023年4月10日) - 2

    stable-diffusion官方版本地复现手册主页:https://github.com/wjxpro邮箱:804359553@qq.com文章目录**stable-diffusion官方版本地复现手册**〇、说明环境一、准备1.[stable-diffusion](https://github.com/CompVis/stable-diffusion)(标题链接可点)2.[sd-v1-4.ckpt](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/tree/main)3.[clip-vit-large-patc

  8. javascript - 在 Chart.js 2 中修改散点图的 X 轴标签 - 2

    在Chart.js2中,我生成了一个散点图,其中x坐标是Epoch时间戳,y坐标是整数。我想知道是否有一种方法可以格式化图表的x轴标签,以便日期以人类可读的格式显示。更新:目前我正在从以毫秒为单位的Unix时间戳构建我的图表。该原型(prototype)的其他部分使用Date类的toDateString方法格式化这些日期(例如FriAug52016)。 最佳答案 为此,您可以使用scales.xAxes选项中的ticks.userCallback,以便为每个xaxis刻度返回格式化日期。如果您使用的是momentjs附带的捆绑版本c

  9. javascript - 带序号的 nvd3 散点图 - 2

    我是d3和nvd3的新手,想创建一个简单的散点图,就像example但带有ordinaly轴。所以y轴值是分类字符串。这是我认为我需要做的:varxfun=function(d){returnd.Pos}//simpleints,yfun=function(d){returnd.Title}//theordinalvaluesvarchart=nv.models.scatterChart().showDistX(true).showDistY(true).color(d3.scale.category10().range()).margin({top:30,right:20,botto

  10. javascript - d3.js 散点图 - 缩放/拖动边界、缩放按钮、重置缩放、计算中位数 - 2

    我已经构建了一个具有缩放/平移功能的d3.js散点图。您可以在此处查看完整内容(单击“在新窗口中打开”以查看完整内容):http://bl.ocks.org/129f64bfa2b0d48d27c9有几个我一直无法弄清楚的功能,如果有人能指出正确的方向,我会很乐意帮助它:我想对区域应用X/Y缩放/平移边界,这样您就不能将其拖动到特定点(例如零)以下。我还尝试过创建Googlemap风格的+/-缩放按钮,但没有成功。有什么想法吗?更不重要的是,还有几个领域我已经找到了解决方案,但它非常粗糙,所以如果您有更好的解决方案,请告诉我:我添加了一个“重置缩放”按钮,但它只是删除图表并在其位置生成

随机推荐