特别鸣谢:本期投稿来自南方医科大学的氢氧根学姐
接下来开始展示美女学姐的经验分享"如何用ChatGPT复现CNS图"
原图来自这篇Nature文章的Fig 2I
文献地址:https://www.nature.com/articles/s41586-024-07630-7
设定角色
首先,我们给GPT定义一个角色,“R语言数据可视化专家”,使得GPT聚焦特定技能:这种指定强调了R语言和数据可视化这两个领域的专业技能,帮助GPT专注于相关的技术和工具,如ggplot2、plotly、lattice等R包。并告诉GPT:我期望GPT在R语言数据可视化方面表现如专家,可以让GPT调整回答的深度和技术细节,以确保信息的准确性和实用性。
明确图标类型和内容
然后,不要着急直接让GPT给出复现代码,而是让GPT解读图片类型和包含的信息,当然,你可以更加明确地指出需要关注哪些信息,比如:
图表类型:首条形图、折线图、散点图、热图、雷达图等。这有助于确定使用哪种R语言的绘图包和函数来复现。
数据信息:数据种类,如数值类型、类别类型等,数据的维度和结构,比如单变量、多变量等。
视觉元素:包括颜色使用、图例说明、标签和标题等,这些都是复现图表时需要准确掌握的细节。
附加特征:比如图中是否有错误条、数据聚合形式(平均数、中位数等)、使用的比例尺或转换(如对数尺度)等。
这个prompt提供了一个明确的任务方向和需要关注的细节,这有助于确保生成的代码能够尽可能接近原图。
选择绘图方法
前面GPT已经识别了特定的图表类型,比如条形图、散点图、折线图等,接下来的这句prompt能让GPT提供适用于R语言中的不同方法或包,来帮助你绘制指定的图表类型。
另外,像这个案例中展示的,GPT一般会给出不同的方法以及各种方法的优缺点,以便你选择最适合展示你数据的图表类型。
生成和使用测试数据
这句prompt为完成任务提供了明确的方向和执行步骤,确保输出的质量和准确性:
明确任务需求:要求在R中生成测试数据并复现图表,这要求GPT不仅提供绘图代码,还需要构造适合的示例数据。
细节规定:要求数据大小和颜色尽可能保持一致,这强调了视觉一致性的重要性,提示GPT在生成图表时需要注意细节的精确匹配。
选择具体的方法:通过指定“用方法1复现”,明确了使用哪种特定的绘图方法。
然后就可以愉快地将代码复制到Rstudio作图啦!
修改和优化
如果代码报错,直接将报错信息扔给GPT就行,它会帮你解决。
最开始,它画的图是这样的:
有点丑,我们提出修改要求让GPT帮我们修改:
如果GPT没有完全理解我们的意思,可以进行澄清:
逐步提出具体的修改需求进行优化我们的图:
最终的代码:
# 安装并加载fmsb包
if (!require(fmsb)) {
install.packages("fmsb")
library(fmsb)
}
# 创建雷达图数据
# 假设每个基因有三种不同的细胞类型的表达数据
genes <- c("Prdm1", "Eomes", "Ccr7", "Cxcx3", "Cxcx4", "Cxcx5", "Cxcx6", "Cx3cr1", "Pdcd1", "Tigit", "Lag3", "Havcr2", "Sell", "Cd69", "Cd160", "Crem", "Tbx21", "Tox", "Klrg1", "Prf1", "Gzmb")
min_values <- rep(0, length(genes)) # 假设最小表达值为0
max_values <- rep(1, length(genes)) # 假设最大表达值为1
# 创建三组数据,模拟不同的细胞类型
data1 <- runif(length(genes), 0.5, 1)
data2 <- runif(length(genes), 0.3, 0.7)
data3 <- runif(length(genes), 0.1, 0.5)
# 组成最终的数据框
data <- rbind(min_values, max_values, data1, data2, data3)
# 转换为数据框并添加列名
data <- as.data.frame(data)
colnames(data) <- genes
# 定义点的颜色和填充颜色
point_colors <- c("blue", "red", "black") # 点的颜色
fill_colors <- c(rgb(0,0,1,0.3), rgb(1,0,0,0.3), rgb(0,0,0,0.3)) # 填充颜色,透明度调至0.3
# 设置图形背景色和绘制雷达图
par(bg="white") # 设置图形背景色为白色
radarchart(data, axistype=1,
pcol=point_colors, # 点的颜色
pfcol=fill_colors, # 填充颜色
plwd=2, # 设置线的宽度更细
plty=1,
cglcol="grey", cglty=2, axislabcol="white", caxislabels=rep("", length(genes)), # 将轴标签颜色设置为白色,以隐藏标签
cglwd=0.8, vlcex=1.2)
# 添加图例,仅含有实心圆点
legend("topright", legend=c("CX3CR1+", "CXCR6+", "CXCR6+ 10^8 Ad-HBV"),
col=point_colors, pch=19, pt.cex=1.2,
pt.bg=fill_colors, bty="n", cex=0.8)
最终出图:
总结GPT复现数据图6大步骤:
1.设定角色:在任务开始时,为GPT设定一个特定的角色,比如“R语言数据可视化专家”。设定角色可以帮助GPT聚焦在特定领域的专业知识和技能,从而提供更准确和专业的建议和代码。
2.明确图表类型和内容:让GPT明确需要复现的图表类型和包含的信息。明确图表的类型(如条形图、散点图、折线图等),识别图表中的数据类型和各个数据点的关系。
3.选择合适的绘图方法:询问在R语言中有哪些方法可以绘制该类型的图表。了解不同的R语言包(如ggplot2、lattice、plotly等)及其适用场景和优缺点,选择最适合当前需求的方法。
4.生成和使用测试数据:生成与原图表数据相似的测试数据,并用选定的方法绘制图表。确保测试数据的大小和结构与原图表一致,并在代码中保持一致的颜色和样式。
5.进行具体的修改和优化:根据需要进行具体的图表修改,如调整点的大小、修改填充色的透明度、调整网格线样式等。明确每一项具体修改的目标和预期效果,通过精细调整提高图表的视觉效果和可读性。
6.迭代和反馈:在每一步完成后进行检查和反馈,必要时进行调整。通过逐步迭代和调整,确保最终结果符合预期,并不断优化图表的各个细节。