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

目录
相关文章
|
19天前
|
算法 数据中心 Python
基于python雪花算法工具类Snowflake-来自chatGPT
基于python雪花算法工具类Snowflake-来自chatGPT
20 4
|
2天前
|
数据可视化 Linux 数据格式
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
5 0
|
2天前
|
Python
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
11 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
好书推荐丨AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀
好书推荐丨AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀
32 2
|
2月前
|
机器学习/深度学习 人工智能 大数据
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
233 6
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
Python绘图工具Matplotlib安装与使用,快速上手
Python绘图工具Matplotlib安装与使用,快速上手
|
2月前
|
人工智能 JSON 机器人
【Chat GPT】用 ChatGPT 运行 Python
【Chat GPT】用 ChatGPT 运行 Python
|
2月前
|
数据可视化 API Python
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
|
2月前
|
数据可视化 Linux API
Python绘图工具seaborn,教会你如何绘制更加精美的图形(一)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(一)
|
2月前
|
数据采集 前端开发 C++
Python通过matplotlib动态绘图实现中美GDP历年对比趋势动图
随着中国的各种实力的提高,经常在各种媒体上看到中国与各个国家历年的各种指标数据的对比,为了更清楚的展示历年的发展趋势,有的还做成了动图,看到中国各种指标数据的近年的不断逆袭,心中的自豪感油然而生。今天通过Python来实现matplotlib的动态绘图,将中美两国近年的GDP做个对比,展示中国GPD对美国的追赶态势,相信不久的将来中国的GDP数据将稳超美国。
79 2

相关实验场景

更多