社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  chatgpt

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

走天涯徐小洋地理数据科学 • 9 月前 • 235 次点击  


使用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()


结果如图:



让我们和论文中的图进行对比



综合对比这两张图,GPT-4复现的结果绝对是99.99%以上的还原!这展示了GPT4在科研绘图中的强大实力。因此,如果您还没用过GPT-4辅助Python编程以及绘图,用AI强大的能力辅助水文绘图,也许现在就是开始的时候了!



以上便是本期图绘的诚意分享啦,希望能对大家的科研工作有所帮助,欢迎大家持续关注我们!

一图胜千言!水文图绘改版后致力于分享水文相关的精美图表,为读者提供作图思路和经验,帮助大家制作更漂亮丰富的图表。同时欢迎留言咨询绘图难点,我们会针对性地分享相关绘制经验。另外也期待读者踊跃来稿,分享更好的构图思维和技巧,稿件可发送至邮箱hydro90@126.com, 或者联系微信13146052033投稿。


编辑:张恒飞 王龙浩 | 校稿:Hydro90编委

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/167390
 
235 次点击