为了账号安全,请及时绑定邮箱和手机立即绑定

使用 1D X、Y 和 Z 变量在 python 中绘制二维等高线图

使用 1D X、Y 和 Z 变量在 python 中绘制二维等高线图

繁星点点滴滴 2023-05-23 16:26:55
让我承认我是 Python 的新手,开始这个查询。我想在 Python 中创建数据的等高线图,以便自动化该过程,否则可以使用 Surfer 轻松执行。我有 1000 个这样的数据文件,手动创建可能会非常乏味。我正在使用的数据如下所示,它是一个带有 0、1 和 2 标头以及 1,2,..279 作为索引的数据框:     0   1         20     3  -1 -0.0107001     4  -1  0.0401002     5  -1  0.0610003     6  -1  0.0520004     7  -1  0.013100..   ..  ..       ...275  30  -9 -1.530100276  31  -9 -1.362300277  32  -9 -1.190200278  33  -9 -1.083600279  30 -10 -1.864600[280 rows x 3 columns]这里,x=data[0]y=data[1]z=data[2]由于轮廓函数 pf matplotlib 要求 z 是一个二维数组;这就是混乱开始的地方。在计算器查询的几种解决方案之后,我做了以下事情:import numpy as npx=np.array(x)y=np.array(y)z=np.array(z)X, Y = np.meshgrid(x, y)import scipy.interpolaterbf = scipy.interpolate.Rbf(x, y, z, function='cubic')Z=rbf(X,Y)lmin=data[2].min()lmax=data[2].max()progn=(lmax-lmin)/20limit=np.arange(lmin,lmax,progn)fig, ax = plt.subplots(figsize=(6,2)) #x ranges between 3 to 57, y -1 to -10ax.contour(X,Y,Z,limit) ax.set_title('Contour Plot')plt.show()使用上面的代码可以得出该图。然而,这是不希望的,如果一旦可以看穿表面噪声线,那么下面就会有有序的等高线,这实际上是需要的,从这里的冲浪者生成的等高线图中可以看出。我想重申,生成冲浪图时使用了相同的数据。在创建所需情节方面的任何帮助都将受到高度赞赏。
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

除了丢失数据之外,我在处理不规则间隔的数据时遇到了类似的问题。有人提出的关于二维散点图的建议是完美的解决方案。

plt.figure(figsize=(10,10))
plt.scatter(df.doy,df[i].UT,c=df[i].TEC,s=10,cmap="jet")
plt.colorbar()

Likewsie,我使用绘制了相同的等高线图plt.tricontourf并得到了相同的结果

plt.figure(figsize=(10,10))
plt.tricontourf(df.doy,df.UT,df.TEC,100,cmap="jet")
plt.colorbar()


查看完整回答
反对 回复 2023-05-23
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我想把他的建议与我的查询结合起来。


ax.contour替换为ax.tricontour解决了我的情况。并ax.tricontourf完成轮廓填充。因此,我的代码的最后一段是:


fig, ax = plt.subplots(figsize=(6,2)) #x ranges between 3 to 57, y -1 to -10

ax.tricontour(X,Y,Z,limit) 

ax.tricontourf(X,Y,Z,limit) 

ax.set_title('Contour Plot')

plt.show()


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信