讓我承認我是 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()
慕姐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
提交
取消
