2025.05.21【Scatter】散点图绘制技巧与案例

Custom marker features

The geom_point() function has option to custom color,

stroke, shape, size and more. Learn how to call them.

Map marker feature to variable

Ggplot2 makes it a breeze to map a variable to a marker

feature. Here is an example where marker color depends on

its category.

文章目录

2025.05.05【Scatter】| 散点图绘制技巧与案例

引言

在生物信息学领域,散点图(Scatterplot)是一种基础而强大的工具,用于展示两个数值变量之间的关系。每个点代表一个观测值,其在X轴(水平)和Y轴(垂直)上的位置反映了这两个变量的值。散点图可以直观地揭示数据点的分布模式、趋势和异常值。

在R语言中,我们通常使用ggplot2包来构建散点图。geom_point()函数是构建散点图的核心,它允许我们通过点的形状、颜色、大小等属性来增强图表的信息量。例如,我们可以用不同的颜色表示不同的类别,或者用点的大小表示第三个变量的数值。

此外,ggplot2的灵活性还体现在对图表细节的控制上,如坐标轴、图例、标题等。通过调整这些元素,我们可以创建出既美观又信息丰富的散点图,从而更好地理解数据和传达结果。

总之,掌握ggplot2中的散点图绘制技巧,对于生物信息学研究者来说至关重要。它不仅能帮助我们探索数据的内在联系,还能提升我们的数据可视化能力。

散点图的基本概念

什么是散点图

散点图是一种以平面直角坐标系为基础的图形表示方法,用于展示两个数值变量之间的关系。在散点图中,每个数据点的位置由其在两个变量上的值决定,横坐标(X轴)代表一个变量的值,纵坐标(Y轴)代表另一个变量的值。

散点图的作用

  1. 揭示关系:散点图可以直观地展示两个变量之间的相关性,如正相关、负相关或无相关。

  2. 发现趋势:通过观察数据点的分布趋势,我们可以发现数据中的潜在规律。

  3. 识别异常值:散点图可以帮助我们识别数据中的异常值或离群点。

R语言中的散点图绘制

安装和加载ggplot2

在R语言中绘制散点图,我们首先需要安装并加载ggplot2包。如果你还没有安装这个包,可以使用以下命令进行安装:

r 复制代码
install.packages("ggplot2")

安装完成后,使用library()函数加载ggplot2包:

r 复制代码
library(ggplot2)

基本的散点图绘制

下面是一个基本的散点图绘制示例。我们将使用mtcars数据集,这是R语言内置的一个数据集,包含了1973-1974年间32款汽车的燃油消耗(mpg)和气缸数(cyl)等信息。

r 复制代码
# 加载ggplot2包
library(ggplot2)

# 使用mtcars数据集
data(mtcars)

# 绘制基本的散点图
ggplot(mtcars, aes(x = mpg, y = disp)) +
  geom_point()

在这个例子中,aes()函数用于指定美学映射,即X轴和Y轴的变量。geom_point()函数用于添加点图层,从而生成散点图。

自定义散点图

调整点的颜色和大小

我们可以通过colorsize参数来自定义点的颜色和大小。例如,我们可以用不同的颜色表示不同的气缸数:

r 复制代码
ggplot(mtcars, aes(x = mpg, y = disp, color = factor(cyl))) +
  geom_point(size = 3)

这里,color = factor(cyl)将气缸数转换为因子类型,并为每个因子级别分配不同的颜色。size = 3设置了点的大小。

添加标题和标签

为了使图表更加清晰易懂,我们可以添加标题和坐标轴标签:

r 复制代码
ggplot(mtcars, aes(x = mpg, y = disp)) +
  geom_point() +
  xlab("Miles per Gallon (mpg)") +  # X轴标签
  ylab("Displacement (in cubic inches)") +  # Y轴标签
  ggtitle("Scatterplot of mpg vs disp")  # 图表标题
添加图例

如果图表中使用了颜色或形状等视觉通道来表示分类变量,我们可以添加图例来解释这些视觉通道的含义:

r 复制代码
ggplot(mtcars, aes(x = mpg, y = disp, color = factor(cyl))) +
  geom_point() +
  scale_color_discrete(name = "Cylinders")  # 添加图例标题

这里,scale_color_discrete()函数用于设置颜色图例的标题。

散点图的应用案例

案例1:探索基因表达数据

在生物信息学中,我们经常需要探索基因表达数据,以发现不同条件下基因表达的变化。下面是一个使用散点图探索基因表达数据的示例。

假设我们有一个基因表达数据集,包含了两个条件下(条件A和条件B)的基因表达值。我们可以使用散点图来比较这两个条件下的基因表达差异。

r 复制代码
# 假设gene_expression是包含基因表达数据的数据框

# gene_expression$ConditionA 和 gene_expression$ConditionB 分别是条件A和条件B下的基因表达值

ggplot(gene_expression, aes(x = ConditionA, y = ConditionB)) +
  geom_point() +
  xlab("Gene Expression in Condition A") +
  ylab("Gene Expression in Condition B") +
  ggtitle("Comparison of Gene Expression between Conditions")

通过观察散点图,我们可以发现基因表达在两个条件下的关系和差异。

案例2:分析临床数据

在临床研究中,我们经常需要分析不同变量之间的关系,如年龄、体重和疾病风险等。下面是一个使用散点图分析临床数据的示例。

假设我们有一个临床数据集,包含了患者的年龄(Age)和体重(Weight)以及是否患有某种疾病(Disease)的信息。

r 复制代码
# 假设clinical_data是包含临床数据的数据框

# clinical_data$Age 和 clinical_data$Weight 分别是患者的年龄和体重

# clinical_data$Disease 是一个二元变量,表示是否患有疾病(1表示患有疾病,0表示未患病)

ggplot(clinical_data, aes(x = Age, y = Weight, color = Disease)) +
  geom_point() +
  xlab("Age") +
  ylab("Weight") +
  ggtitle("Relationship between Age and Weight in Patients") +
  scale_color_manual(values = c("red", "blue"), labels = c("Disease", "No Disease"))

在这个例子中,我们用红色表示患有疾病的患者,用蓝色表示未患病的患者。通过观察散点图,我们可以发现年龄和体重与疾病风险之间的关系。

结论

掌握ggplot2中的散点图绘制技巧对于生物信息学研究者来说至关重要。它不仅能帮助我们探索数据的内在联系,还能提升我们的数据可视化能力。通过本文的介绍和示例,希望您能够掌握基本的散点图绘制方法,并将其应用于实际的生物信息学研究中。

🌟 非常感谢您抽出宝贵的时间阅读我的文章。如果您觉得这篇文章对您有所帮助,或者激发了您对生物信息学的兴趣,我诚挚地邀请您:

👍 点赞这篇文章,让更多人看到我们共同的热爱和追求。

🔔 关注我的账号,不错过每一次知识的分享和探索的旅程。

📢 您的每一个点赞和关注都是对我最大的支持和鼓励,也是推动我继续创作优质内容的动力。

📚 我承诺,将持续为您带来深度与广度兼具的生物信息学内容,让我们一起在知识的海洋中遨游,发现更多未知的奇迹。

💌 如果您有任何问题或想要进一步交流,欢迎在评论区留言,我会尽快回复您。

相关推荐
l1t7 小时前
DeepSeek总结的如何构建 AI 仪表盘
人工智能·信息可视化
JEECG低代码平台7 小时前
JimuReport 积木报表 v2.3.2 版本发布,免费的可视化报表和大屏设计
信息可视化
鹧鸪云光伏17 小时前
基于支架参数一键生成光伏全套CAD图纸
大数据·信息可视化·cad·光伏·储能设计方案
CodeCraft Studio1 天前
LightningChart .NET v12.5.1 发布:高性能数据可视化再升级,赋能工业与实时数据场景
信息可视化·.net·gpu·数据可视化·lightningchart·高性能图表开发·数据可视化引擎
财经资讯数据_灵砚智能1 天前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月9日
大数据·人工智能·信息可视化·自然语言处理·ai编程
2501_944448471 天前
数据可视化 Kotlin KMP OpenHarmony图表生成
开发语言·信息可视化·harmonyos
财经资讯数据_灵砚智能1 天前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月10日
人工智能·python·信息可视化·自然语言处理·ai编程
独特的螺狮粉1 天前
开源鸿蒙跨平台Flutter开发:喝水时间提醒应用
开发语言·flutter·华为·信息可视化·开源·harmonyos·鸿蒙
2301_822703201 天前
Flutter 框架跨平台鸿蒙开发 - 梦境场景重现应用
flutter·华为·信息可视化·开源·harmonyos·鸿蒙
没有梦想的咸鱼185-1037-16631 天前
AI大模型支持下的顶刊绘图|散点图、气泡图、柱状图、热力图、柱状图、热力图、箱线图、热力图、云雨图、韦恩图、瀑布图、神经网络图、时间序列或分布展示
人工智能·神经网络·arcgis·信息可视化·数据分析·r语言·ai写作