让我承认我是 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 回答
![?](http://img1.sycdn.imooc.com/545846070001a15002200220-100-100.jpg)
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()
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
慕姐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()
添加回答
举报
0/150
提交
取消