Seurat::DotPlot绘图美化-facet方法添加X轴注释标签

使用scDotPlot包绘制单细胞超绝marker基因气泡图! 单细胞RNA测序技术的快速发展为我们研究复杂生物系统提供了前所未有的机会。在海量的单细胞数据中,识别和可视化特征基因(marker genes)是理解细胞类型和功能的关键一步。气泡图(dot plot)作为一种直观且信息丰富的可视化方式,能同时展示基因表达水平和表达比例,是单细胞分析中的重要工具。本文将介绍如何使用scDotPlot包绘制精美的单细胞marker基因气泡图,帮助研究者更有效地展示和解读单细胞数据。 阅读详情
AI摘要

这篇博客详细介绍了如何利用Seurat包在R中创建气泡图,并添加自定义的分类标签注释。首先,通过DotPlot获取绘图数据,然后创建x轴分类标签。接着,将注释与绘图数据结合,并根据需求调整y轴标签顺序。最后,使用ggplot2进行绘图,包括设置点的大小、颜色、分面网格等,并通过循环修改分面标签颜色,增强可视化效果。此外,还提到了添加聚类树的绘图方法。


###获取Seurat气泡图的绘图数据

data.usage <- DotPlot(sc,features = VariableFeatures(sc)[1:10])$data 
> data.usage
                     avg.exp      pct.exp features.plot id avg.exp.scaled
Htr2c           6.387599e-02   0.88218224         Htr2c  0   -0.241662933
St6gal1         1.504964e-02   0.21474173       St6gal1  0   -0.523974858
AC121788.1      4.451450e-02   0.64422519    AC121788.1  0   -0.310429629
Gm28928         4.653460e-03   0.05803831       Gm28928  0   -0.215970623

####创建x轴分类标签注释

data.anno <- data.frame(
    features.plot = unique(data.usage$features.plot),
    label = c("Cell.A","Cell.A","Cell.B","Cell.C","Cell.C","Cell.D","Cell.E","Cell.F","Cell.G","Cell.H")
)
> data.anno
   features.plot  label
1          Htr2c Cell.A
2        St6gal1 Cell.A
3     AC121788.1 Cell.B
4        Gm28928 Cell.C

###将注释添加到data.usage方便绘图调用

df.plot <- plyr::join(data.usage,data.anno)

###根据需求重排y轴绘图标签顺序

df.plot$id <- factor(df.plot$id,levels = sort(levels(df.plot$id),decreasing = T) )
> df.plot$id
  [1] 0  0  0  0...
  Levels: 9 8 7 6 5 4 3 21 20 2 19 18 17 16 15 14 13 12 11 10 1 0 #自定义的绘图标签顺序

###重绘气泡图并基于facet分面方法为x轴添加注释标签

p <- ggplot(df.plot,aes(x=features.plot,y =  as.numeric(id),size = pct.exp, color = avg.exp.scaled))+
    geom_point() + 
    scale_size("% detected", range = c(0,10)) + #调整绘图点的相对大小
    scale_color_gradientn(colours = viridis::viridis(20),
                          guide = guide_colorbar(ticks.colour = "black",frame.colour = "black"),
                          name = "Average\nexpression") +
    cowplot::theme_cowplot() + 
    ylab("") + xlab("Markers") + theme_bw() +
    scale_y_continuous(breaks = 1:length(levels(df.plot$id)),labels = levels(df.plot$id),sec.axis = dup_axis())+ #复制 y轴 代替边框效果
    facet_grid(~label, scales="free_x",space = "free")+theme_classic() +
    theme(
        axis.text.x = element_text(size=12, angle=0, hjust=0.5, color="black",face="bold"),#x轴标签样式
        axis.text.y = element_text(size=12, color="skyblue",face="bold"),
        axis.title.x = element_text(size=14,colour = 'black',vjust = -0.8,hjust = 0.5),#坐标轴标题
        
        axis.ticks.y = element_blank(),#坐标轴刻度
        axis.text.y.right = element_blank(),#坐标轴标签隐藏
        axis.ticks.x = element_blank(),
        axis.line = element_line(colour = 'grey30',size = 0.2), #坐标轴轴线样式
        
        panel.spacing=unit(0, "mm"), #分面图图块间距
        strip.text.x = element_text(size=15, face="bold",color = "#FFFFFF",
                                    vjust = 0.5,margin = margin(b = 3,t=3)),#分面标签样式
        strip.background = element_rect(colour="grey30", fill="grey60",size = 1)
    )


###分面标签上色

g <- ggplot_gtable(ggplot_build(p))
strips <- which(grepl('strip-', g$layout$name))
cols <- BuenColors::jdb_color_maps[1:length(unique(df.plot$label))] %>% as.vector() 

for (i in seq_along(strips)) {
    k <- which(grepl('rect', g$grobs[[strips[i]]]$grobs[[1]]$childrenOrder))
    l <- which(grepl('titleGrob', g$grobs[[strips[i]]]$grobs[[1]]$childrenOrder))
    g$grobs[[strips[i]]]$grobs[[1]]$children[[k]]$gp$fill <- cols[i]
}
plot(g)

最后再分享一个添加聚类树的绘图方法,在我的GitHub。

r - ggplot2 outside panel border when using facet - Stack Overflow

改造单细胞DotPlot 随着我们课程的持续深入,以及各位小伙伴分析技能的日益提升,目前很多同学已经不满足于Seurat的可视化功能并希望能够做出一些。 阅读详情

相关推荐

「热图」ComplexHeatmap展示单细胞聚类

实用Seurat自带的热图函数DoHeatmap绘制的热图,感觉有点不上档次,于是我尝试使用ComplexHeatmap这个R包来对结果进行展示。 个人觉得好的热图有三个要素 聚类: 能够让别人一眼就看到模式 注释: 附加注释能提供更多信息 配色: 要符合直觉,比如说大部分都会认为红色是高表达,蓝色是低表达 在正式开始之前,我们需要先获取一下pbmc的数据,Seurat提供了R包Seura...

xuzhougeng blog 2万+

单细胞seurat对象-气泡图dotplot美化-颜色配色-自定义修改

第一期我们分享了如何使用标准流程获取单细胞的seurat对象,也就是pbmc.rds。本期将分享如何美化dotplot,继续使用pbmc示例,第一期获得的pbmc对象。首先读取数据,并分组、通过findallmarkers计算marker基因。第二期我们分享了如何美化featureplot。大家好,欢迎来到单细胞图片美化专辑!

生信小博士的博客 1万+

R语言绘制点阵图(dotplot)

点阵图是一种非常有用的数据可视化工具,可以帮助我们展示数据的分布。R语言的graphics包和ggplot2包都提供了方便的函数来绘制点阵图。在本教程中,我们将介绍如何在R语言中创建点阵图。

Mrrunsen的博客 1868

Seurat绘制单个基因Cross Tissue和annotation的Dotplot

二维Seurat Dotplot

Jeriu的博客 1573

使用ggplot2包的geom_dotplot函数绘制分组点图

在geom_dotplot函数中,我们可以设置一些参数来调整图形的外观,例如binwidth用于设置点的宽度,stackdir用于设置点的堆叠方向,dotsize用于设置点的大小等。在R语言中,可以使用ggplot2包的geom_dotplot函数来创建分组点图。通过以上步骤,我们可以使用ggplot2包的geom_dotplot函数创建出具有良好可读性的分组点图。运行上述代码后,将会生成一个分组点图,图形的标题为"分组点图示例",x轴标签为"组别",y轴标签为"数值"。

DevNinja的博客 304

使用ggplot2包的geom_dotplot函数进行分组点图绘制实战

而在R语言中,ggplot2包提供了丰富的功能和灵活性,使我们能够轻松地创建各种类型的图表,包括点图。本文将向您展示如何使用ggplot2包的geom_dotplot函数来创建分组点图,并提供相应的源代码。本文介绍了如何使用ggplot2包的geom_dotplot函数来创建分组点图,并提供了相应的源代码。希望本文能够对您有所帮助!ggplot2包提供了丰富的参数和选项,可以让我们自定义分组点图的样式。上述代码将创建一个简单的分组点图,其中每个分组都表示为一组点,而x轴表示分组标识,y轴表示数值数据。

TechRoar的博客 305

Seurat中Dotplot的作图数据,其实来源于FindAllmarker得到的数据​:pct,avg_log2C 。获取百分比,平均表达量

【代码】Seurat中Dotplot的作图数据,其实来源于FindAllmarker得到的数据​:pct,avg_log2C。获取百分比,平均表达量。

生信小博士的博客 1989

R语言绘图实战:使用ggplot2包的geom_dotplot函数绘制分组点图

我们从基本的绘制开始,并进一步进行了定制化,包括调整点的大小和分布、形状和颜色以及添加统计信息。在上述代码中,我们将点的形状设置为圆形(shape = 21),点的边框颜色设置为黑色(color = “black”),并通过scale_fill_manual函数手动定义填充颜色。除了调整点的大小和分布外,我们还可以调整点的形状和颜色。例如,可以使用shape参数来修改点的形状,使用color参数来修改点的颜色。可以使用dotsize参数来调整点的大小,通过bins参数来控制点在y轴方向的分布情况。

HackSquad的博客 549

注释气泡图函数(更新)

主要更新的内容是一些之前遗留的疏忽错误,例如气泡过大的问题等等。此外小伙伴反应之后,我们也发现,之前的函数在做单细胞气泡图的时候函数没有提供修改因子顺序,因为order=T设置之后导致气泡是按照从大到小排列的。这个函数还是受到很多小伙伴的喜爱的。可以看到,顶部分组排序是按照首字母排序的,数据不是从到大到小从左到右排列。那么order参数选择F,用level设置自己需要的顺序,groups也是可以设置的。为了演示,我们换一个数据,其他的内容不变,只演示单细胞的内容。我们先按照默认的做一下,order=T。

qq_42090739的博客 1652

使用ggplot2包中的geom_dotplot函数绘制分组点图

binaxis参数指定了点图所依据的轴(在这里是y轴),stackdir参数指定了点的堆叠方式(在这里是居中堆叠),dotsize参数指定了点的大小。scale_fill_manual(values = c(“#FF0000”, “#0000FF”), labels = c(“自动档”, “手动档”)):这行代码设置了分组的填充颜色和对应的标签。labs(title = “分组点图示例”, x = “传动方式”, y = “每加仑英里数”):这行代码设置了图表的标题、x轴标签和y轴标签。

TechRoar的博客 288

R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义填充色)实战(dot plot)

R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义填充色)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义填充色)实战(dot plot) #仿真数据 #geom_dotplot函数绘制分组点图(自定义填充色) #仿真数据 # Convert the variable dose from a numeric to a factor variable ToothGrowth$dose <-..

data+scenario+science+insight 1713

Seurat分析单细胞标准流程

Seurat分析单细胞数据流程

xz10070617的博客 9430

【QGIS】利用“创建网格”功能实现区域等距分割与坐标转换实战

本文详细介绍了如何在QGIS中使用“创建网格”工具实现区域等距分割。通过实战演示,将北京市行政区划切割为150米正方形网格,并重点讲解了关键步骤:选择投影坐标系EPSG:3857以确保网格尺寸精确,以及将结果转换为常用的WGS84经纬度坐标。文章还涵盖了进阶技巧与常见问题解决方案,帮助用户高效完成空间网格化分析任务。

weixin_29232507的博客 94

单细胞数据可视化---Dotplot个性化修饰的一个简单小例子

这里分享一种单细胞数据可视化的图形修饰。 先加载一个seurat公共的单细胞数据集 InstallData("pbmc3k") data("pbmc3k") PBMC <- pbmc3k.final PBMC = UpdateSeuratObject(object = PBMC) 一般展示marker基因用这种点图: Markers <- c('AGER','SCGB3A2','TPPP3','CD68','FCN1','CD1C','CD14','MARCO',

qq_42090739的博客 1万+

避坑指南:AUTOSAR FlashDriver操作DFlash模拟EEPROM时,你最容易忽略的5个细节

本文深入探讨了AUTOSAR FlashDriver在DFlash模拟EEPROM操作中最容易被忽视的五大细节问题,包括地址合法性检查、操作时序控制、并发访问冲突、电源稳定性管理和寿命管理。通过实际项目案例和工程化解决方案,帮助开发者避免常见陷阱,提升汽车电子控制单元(ECU)的可靠性和稳定性。

weixin_42741930的博客 246

ROS相机内参标定详细步骤指南

相机标定的目的是为了确定相机内部参数和外部参数,以便修正图像并将图像坐标映射到世界坐标,或者从世界坐标映射到图像坐标。这个过程是计算机视觉和三维感知任务的关键步骤之一,它有以下主要目的: 1. **减小畸变**:相机镜头和传感器可能引入径向和切向畸变,使得图像中的直线变得弯曲或者物体的形状不准确。通过标定相机,可以矫正这些畸变,使图像更准确。

m0_56661101的博客 1万+

DotPlot中画图指定横坐标

画出来的图的纵坐标是按照字母顺序排序的,也可以设置想要的顺序。

weixin_54434521的博客 2737

别再用默认参数了!手把手教你用2P2Z补偿网络优化Buck电源的动态性能

本文详细介绍了如何通过2P2Z补偿网络优化Buck电源的动态性能,解决默认参数下的负载阶跃响应问题。从频域分析到元件选型,再到实测验证,手把手教你提升相位裕度,显著降低超调量和稳定时间,适用于DCDC和开关电源设计。

weixin_33657398的博客 256

Python数据分析问题记录1-matplotlib.plot的x轴标签显示顺序问题

matplotlib.plot的x轴标签显示顺序问题 最近在学习利用python进行数据分析,在kaggle上找了一个案例Hotel booking demand,我选择了最高投票的分析结果EDA of bookings and ML to predict cancelations,打算按照他的代码自己手写一遍。 在写到一半时,影像显示出现了问题,x轴的标签顺序不对。x轴的标签为月份,从April开始(已经无法还原之前的错误影像,之前的影像折线从January开始,折线图比现在的影像更混乱)。 代码: 错

maoyu93的博客 2788

Bugku中的source

进入环境后 我们首先查看源码可以得到一个flag 这肯定是个假的(已经提交过了确实是个假的) 题目提示要用Linux 这里使用的是kali 我们首先dirsearch一下这个网站 可以看到有.git文件泄露 也可以点开那个链接但是在里面没有找到flag 然后选择下载这个.git文件 然后进入这个文件夹 输入git reflog查看文件状态 可以看到有四个都有flag is here 一个一个查看git show 然后在40c6d51中发现了我们需要的fl

A272036149的博客 1011

图相似度模型(论文篇)

图相似度模型

weixin_43702653的博客 5746

Scrum Planning Card

最近用Swift写了个小工具Scrum Planning Card,如果你也用scrum管理项目, 或许用这个工具可以提高你的工作效率。 另外欢迎提建议和反馈,谢谢。 欢迎关注我的微信公众号 Hope this helps, Michael 转载于:https://www.cnblogs.com/mobilegeek/p/4331444.html...

weixin_33747129的博客 396

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

nature级别图表:一个注释气泡热图函数(适用于单细胞及普通数据)

,很多小伙伴购买函数,在使用过程却出现问题,主要的原因是我们在帖子里写的不够清楚,小伙伴也没有理解代码的意思,鉴于一个一个解释太费时间,我们决定写函数的帖子一律录制视频解说(视频在B站,搜索:KS科研分享与服务),方便大家使用。接下来看看bulk的效果,对于bulk表达数据,bulk基因表达量那一列列名要修改命名成exp,对于非单细胞的数据, 首先要进行设置的一个参数就是single_type=F,表明我们的对象不是单细胞对象。这就是这个函数的作用了,使用起来还是可以的,希望对您的学习有用。

qq_42090739的博客 1765

YOLOV8改进:添加Wiseiou,有效涨点

【代码】YOLOV8改进:添加Wiseiou,有效涨点。

AIcurator的博客 2391

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2023-11-28-直播单细胞图表美化-seurat数据结构 featureplot dotplot vlnplot

单细胞常见的可视化方式有DimPlot,FeaturePlot ,DotPlot ,VlnPlot 和 DoHeatmap几种 ,Seurat中均可以很简单的实现,但是文献中的图大多会精美很多。之前介绍过DimPlot的一些调整方法。本文介绍FeaturePlot的美化方式,包含以下几个方面 :(1)调整(2)展示基因共表达情况(点图,(3)优化(4)修改theme ,lengend等(5)批量绘制仍然使用之前注释过的sce.anno.RData数据 ,后台回复即可获取这里额外安装。

生信小博士的博客 4981

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: R语言-稀疏矩阵对象格式学习-重点理解稀疏矩阵对象的重构
下一篇: Linux 转换 find 命令的返回结果为 shell array
倪桦
博客等级 码龄4年 5397粉丝 102原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪桦

有帮助的话请杯咖啡吧,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值