专栏名称: 小猿猴GISer
GIS遥感交流学习
目录
相关文章推荐
51好读  ›  专栏  ›  小猿猴GISer

HF.076 | 轻松绘制!看我用ChatGPT复现Nature插图

小猿猴GISer  · 公众号  ·  · 2024-03-05 18:04

正文


使用 GPT4 可以简单地复现 科研论文 中的研究图,从而应用到 水文学者 自己的研究中。本次复现的图表来源于 Nature Communications ,下图节选自文章中的Figure 1(https://doi.org/10.1038/s41467-022-29366-6)。让我们伴随本案例的学习,跟着操作,只需要 简单的几个提示词 ,用我们的数据和提示词一起操作,利用GPT4即可轻松复现该图。类似的Nature子刊中的科研论文插图,可以直接 套用本案例 的步骤进行尝试。


Qi, J., Sun, H., Zhang, Y. et al. Single-cell and spatial analysis reveal interaction of FAP+ fibroblasts and SPP1+ macrophages in colorectal cancer. Nat Commun 13, 1742 (2022). https://doi.org/10.1038/s41467-022-29366-6


01

准备数据


任何良好可视化的基础都是 数据集 。在本教程中,我们使用论文作者提供的 源数据 进行复现(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8976074/)。在 Nature正刊以及子刊 中,数据集往往是 开放共享 的,论文提供的数据集包含各张图的关键 统计数据 ,在他们的网站上,向下滚动可以看到以下内容:



单击Source Data 下载文件 ,文件下载后我们先把Figure 1的sheet提取出来,然后再准备好复现的截图。


提示 GPT4: “请对论文中的插图附件进行详细分析”


确定GPT4 学习到了 论文中的插图之后,我们再把对应的 数据上传 ,GPT-4 界面有上传图标,使用上传文件功能来加载我们的数据集。



提示 GPT4:“接下来我要上传这张图的数据,请给我一个该数据集的概述”


GPT-4 响应:


我们可以点击代码框来看看GPT4是怎么 产生结果 的。


02

插图复现

现在你的GPT4学到了 数据与插图 ,现在可以让他来复现这张图了

提示 GPT4:“请利用上传的数据,绘制第一张图的结果,堆叠条形图”


GPT-4 响应:


GPT4初步帮我们绘制了 比较美观 的结果,接下来让我们 继续提示 GPT4,把GPT4提供的代码复制到Python端进行定制修改。


03

微调图形


GPT4在绘图端的强大表现之一就是它可以进行 私人定制 并进行各种 细节 上的 微调 ,让我们慢慢来提示GPT4,让他逐步修改并 完善图片


提示 GPT4:“请设置每种颜色和最开始的图一致,调大x轴和y轴的粗细,并缩小柱图的间隔”


提示 GPT4:“继续修改代码,请让整体的画布变小一些,柱图的宽度减少一点”


提示 GPT4:“继续修改代码,只保留上面和左边的框线,删除右边和下边的框线”


提示 GPT4:“继续修改代码,让轴上的刻度数字出现在上框线”


请注意每一次提示后GPT4都会 返回代码和结果图 ,然后我们再进行下一次提示。最终我们复制代码到 本地Python 端运行,代码如下:


import matplotlib.pyplot as plt
data['Sample'] = pd.Categorical(data['Sample'], categories=['p1', 'p2', 'p3', 'p4', 'p5'], ordered=True)
# Pivot the data to have samples as columns and cell types as rowspivot_data = data.pivot(index='CellTypes', columns='Sample', values='Per')
# Setting specific colors for each patient to match the initial image providedcolors = ['#00a6d0', '#00dbb0', '#ffa861', '#b000ff', '#ff0062'] # Colors for P1 to P5
# Plot the stacked bar chart with the specified colors, thicker axes, and reduced bar spacingfig, ax = plt.subplots(figsize=(6,4))pivot_data.plot(kind='barh', stacked=True, color=colors, ax=ax, width=0.6)
# Increase the line width for x-axis and y-axisax.xaxis.set_tick_params(width=2)ax.yaxis.set_tick_params(width=2)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)
ax.xaxis.tick_top()ax.xaxis.set_label_position('top')
# Set the width of the axes framefor axis in ['top', 'left']: ax.spines[axis].set_linewidth(2)
# Add title and labelsplt.title('Percentage of Cell Types across Different Patients')plt.xlabel('Percentage of cells (%)')plt.ylabel('Cell Types')plt.legend(title='Patients', bbox_to_anchor=(1.05, 1), loc='upper left')
# Show the plot with a tight layoutplt.tight_layout()plt.show()


结果如图:







请到「今天看啥」查看全文