使用ChatGPT+Python进行科研绘图

简介: 使用ChatGPT+Python进行科研绘图

对科研人员来说,数据可视化是将复杂数据以易于理解的方式表达的重要工具。在Python中,有许多库和工具可用于数据绘图,但如果缺乏专业知识和编程经验,想要绘制出有效且视觉上令人满意的图表具有一定的挑战性。ChatGPT的出现,为编程经验不足的科研工作者们提供了良好的契机。ChatGPT 基于强大的自然语言处理技术,能够理解不同用户的需求,并给出相关的回答和建议。我们只需简要描述想要得到的图的类型,ChatGPT会生成相应的代码,即可实现在Python中绘图。

本期我们主要利用ChatGPT和Python来绘制降雨质心气泡地图


01

数据准备


(1)北京市各区县地图矢量数据(shp文件)。(2)降雨质心(可理解为场次降雨某个时刻的降雨中心)坐标,对应降雨时(min)与雨强大小(mm),具体如下表所示:


02

从ChatGPT中获取代码


首先利用降雨质心数据绘制气泡图:

提问

“用python帮我绘制高级美观的气泡地图,在pycharm里运行显示,数据路径为C:\Users\86136\Desktop\Data.xlsx,数据格式为上文提到表格形式。”

回答

“为了绘制高级美观的气泡地图,我们可以使用Python中的一些库来实现,包括Pandas、Matplotlib和Seaborn,完整代码如下:”


import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
data = pd.read_excel('C:\\Users\\86136\\Desktop\\Data.xlsx') sns.scatterplot(x='x', y='y', data=data, hue='rainfall', size='rainfall', sizes=(50, 500))plt.show()

绘制结果如下


03

代码优化


提问

“帮我优化代码,Time值表示气泡图的颜色深浅,Rainfall值表示气泡图大小。”

回答

“在这个问题中,我们可以根据时间值为气泡图设置颜色深浅,并将Rainfall值用于确定气泡图的大小。”



import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns data = pd.read_excel('C:\\Users\\86136\\Desktop\\Data.xlsx') sns.scatterplot(x='x', y='y', data=data, hue='Time', size='Rainfall', sizes=(50, 500), palette='coolwarm')plt.show()

绘制结果如下

继续对代码进行优化并添加研究区域:

提问

“帮我优化代码,要求保持原有的气泡图大小颜色,然后绘制在我提供的shp文件范围中,只显示含有气泡图的shp图层范围。”

回答

“为了保持原有的气泡图大小和颜色,并将它们绘制在含有气泡图的的shp文件范围内,我们可以使用geopandas库。首先,我们需要导入所需的库和数据。”



import pandas as pdimport geopandas as gpdfrom shapely.geometry import Pointimport matplotlib.pyplot as pltimport seaborn as sns
 # 从Excel文件中读取数据data = pd.read_excel('C:\\Users\\86136\\Desktop\\Data.xlsx')
 # 从shp文件中读取区县边界数据shp_path = 'C:\\Users\\86136\\Desktop\\shp\\北京市区县.shp'map_df = gpd.read_file(shp_path)
 # 将x、y坐标转换为Point对象geometry = [Point(xy) for xy in zip(data['x'], data['y'])]
 # 创建GeoDataFramegeo_data = gpd.GeoDataFrame(data, crs=map_df.crs, geometry=geometry)
 # 空间连接merged = gpd.sjoin(map_df, geo_data, op='contains')
 # 绘制图表fig, ax = plt.subplots(1, figsize=(10, 6))sns.scatterplot(x='x', y='y', data=data, hue='Time', size='Rainfall', sizes=(50, 500), palette='coolwarm', alpha=0.7, legend=False, ax=ax)merged.plot(facecolor='none', edgecolor='black', linewidth=0.5, ax=ax)plt.show()

绘制结果如下

04

美化图表细节


从上步绘制完成的图中可以发现,在生成新代码的时候,图例丢失,继续优化代码:

提问

“继续优化代码,要求按之前的要求添加图例。”

回答

“为了按照之前的要求绘制气泡图,并在提供的shp文件范围内添加图例并完全显示,我们可以使用geopandas和Seaborn库。”



import pandas as pdimport geopandas as gpdfrom shapely.geometry import Pointimport matplotlib.pyplot as pltimport seaborn as sns
plt.rcParams['font.family'] = 'Times New Roman'# 从Excel文件中读取数据data = pd.read_excel('C:\\Users\\86136\\Desktop\\Data.xlsx')
# 从shp文件中读取区县边界数据shp_path = 'C:\\Users\\86136\\Desktop\\shp\\北京市区县.shp'map_df = gpd.read_file(shp_path)
# 将x、y坐标转换为Point对象geometry = [Point(xy) for xy in zip(data['x'], data['y'])]
# 创建GeoDataFramegeo_data = gpd.GeoDataFrame(data, crs=map_df.crs, geometry=geometry)
# 空间连接merged = gpd.sjoin(map_df, geo_data, op='contains')
# 绘制图表fig, ax = plt.subplots(1, figsize=(96, 87))sns.scatterplot(x='x', y='y', data=data, hue='Time', size='Rainfall', sizes=(50, 500), palette='coolwarm', alpha=0.7, legend='brief', ax=ax)merged.plot(facecolor='none', edgecolor='black', linewidth=0.5, ax=ax)
ax.set_xlabel('Longitude', fontsize=14)ax.set_ylabel('Latitude', fontsize=14)legend = ax.legend(loc='upper left', prop={"family": "Times New Roman"})
# 调整图例框大小ax.legend(handlelength=3, handleheight=1)
#ax.legend(frameon=False)ax.legend(fontsize=13.6)# 调整图例位置ax.get_legend().set_bbox_to_anchor((0.25, 1))plt.show()

绘制结果如下

好啦,经过反复调试,最终得到了我们想要的降雨质心气泡地图~

下面是利用ChatGPT和Python实现的一些其他类型的图,供大家参考:



05

注意事项


1.在表述准确的前提下使用英文提问效果要好于中文提问;在提问最开始限制使用的编程语言和使用的具体绘图库会精确代码的方向;出错报错后可以通过继续向ChatGPT追问得到解决。

2.一般的提问格式可以按照:前提假设(使用何种编程语言)---数据样本(提供给ChatGPT的数据样本格式)---需求(需要何种类型的绘图)。

3.对于无代码基础者,建议遵循以下原则:对绘图所需数据进行充分预处理,便于ChatGPT识别;分多次提问,第一步识别数据,第二步绘制所需基本图形,第三步对基本图形进行调整,以减少报错及报错后的调试难度;有逻辑的表述自己的意图,比如说清楚具体需要绘制什么类型的图表。

06

资源分享


1.常用绘图类型使用科研绘图的前提是了解常见图表的种类以及相应的用途,以下几个网站可帮助大家查询常用绘图类型:The R Graph Gallery 网址 :https://r-graph-gallery.com/index.htmlData to Viz 网址 : https://www.data-to-viz.com/2.ChatGPT 常用镜像网站汇总国内注册ChatGPT流程较为繁琐,目前有很多开源项目基于ChatGPT开发的镜像网站供大家学习参考:https://github.com/LiLittleCat/awesome-free-chatgpt3.Pycharm(专业版)ChatGPT插件目前,2020年以后发布的专业版Pycharm已内置多款ChatGPT插件,无需科学上网、注册即可使用,安装教程如下:https://blog.csdn.net/weixin_57664381/article/details/129665074

目录
相关文章
|
2月前
|
数据可视化 Python
Python 高级绘图:探索数据可视化
在Python中,利用matplotlib、seaborn等库可实现数据的可视化。matplotlib功能丰富,支持基础图表绘制;seaborn则提供了更美观的默认样式。此外,matplotlib还支持3D图形及动态图表的生成,满足多样化的数据展示需求。 示例代码展示了如何使用这些库绘制正弦波、散点图、3D曲面图及动态更新的折线图。通过numpy生成数据,并借助matplotlib与seaborn的强大绘图功能,实现数据的直观呈现。
73 17
|
2月前
|
人工智能 自然语言处理 数据挖掘
利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例
利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例
59 1
|
2月前
|
自然语言处理 API Python
一文告诉你如何用 Python 操作 ChatGPT
一文告诉你如何用 Python 操作 ChatGPT
62 2
|
2月前
|
人工智能 API iOS开发
ChatGPT编程Python小案例(拿来就用)—解压zip压缩文
ChatGPT编程Python小案例(拿来就用)—解压zip压缩文
36 0
|
2月前
|
数据可视化 Python
Python 高级绘图:从基础到进阶的可视化实践
本文介绍了使用 Python 的强大绘图库 matplotlib 实现多种图表绘制的方法,包括简单的折线图、多条折线图、柱状图、饼图、散点图及 3D 图的绘制。通过具体代码示例展示了如何设置轴标签、标题、图例等元素,并指出了 matplotlib 支持更多高级绘图功能。来源:https://www.wodianping.com/app/2024-10/47112.html。
87 0
|
3月前
|
数据可视化 数据挖掘 Linux
10幅必须掌握的Seaborn绘图
10幅必须掌握的Seaborn绘图
46 0
|
3月前
|
数据可视化 数据处理 Python
Matplotlib:Python绘图利器之王
Matplotlib:Python绘图利器之王
21 0
|
4月前
|
机器学习/深度学习 人工智能 算法
为什么ChatGPT等AI大模型都是基于Python开发?
为什么ChatGPT等AI大模型都是基于Python开发?
|
4月前
|
数据采集 iOS开发 Python
Chatgpt教你开发iPhone风格计算器,Python代码实现
Chatgpt教你开发iPhone风格计算器,Python代码实现
|
4月前
|
数据可视化 Python
Python 绘图编程:一场震撼视觉的奇幻之旅,带你闯入绚丽多彩的数据可视化世界!
【8月更文挑战第22天】Python 以强大功能和简洁语法闻名,其绘图能力尤其出色,助力数据可视化与创意展现。常用绘图库 Matplotlib 提供丰富指令,支持多样图表创作,如线图、柱状图及散点图等。通过简单代码即可完成数据展示,包括设置标题、轴标签等,实现直观的数据故事叙述,满足不同场景需求。不断实践探索,创造更佳视觉效果。
38 0