我有一個腳本,它分析數據集,然後輸出xyz數據。爲了理解數據的分佈,我想在三維圖中將其可視化。由於我沒有經驗什麼那麼使用matplotlib,我剛剛從here複製的代碼,並期待它my text file的工作,看起來像這樣:Matplotlib RuntimeWarning顯示3D圖
-0.9 -0.9 483
-0.9 -0.7 224
-0.9 -0.5 156
-0.9 -0.3 153
-0.9 -0.1 174
-0.9 0.1 268
-0.9 0.3 95
-0.9 0.5 59
-0.9 0.7 50
-0.9 0.9 199
-0.7 -0.9 917
-0.7 -0.7 244
-0.7 -0.5 208
-0.7 -0.3 148
-0.7 -0.1 139
-0.7 0.1 98
-0.7 0.3 52
-0.7 0.5 56
-0.7 0.7 60
-0.7 0.9 221
...
但是,一旦我開始了劇本,我得到以下錯誤,導致顏色條顯示不正確:
Warning (from warnings module):
File "C:\Program Files\Python35\lib\site-packages\matplotlib\colors.py", line 496
cbook._putmask(xa, xa < 0.0, -1)
RuntimeWarning: invalid value encountered in less
此外,該圖的邊緣上有這些三角形。我不確定他們是否也是上述錯誤的後果。 這是輸出:
這是我的代碼:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
data = np.genfromtxt('plot.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]
xi = np.linspace(-1, 1)
yi = np.linspace(-1, 1)
X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi, interp='linear')
surf = ax.plot_surface(X, Y, Z, rstride=5, cstride=5, cmap=cm.jet,
linewidth=1, antialiased=True)
ax.set_zlim3d(np.min(Z), np.max(Z))
fig.colorbar(surf)
plt.show()
EDIT 1: 我編輯的源代碼以打印XA有問題的行,其輸出之前:
[ nan nan nan nan nan nan nan nan nan nan nan 256.
256. 256. 256. 256. 256. 256. 256. nan nan 256. 256. 256.
256. 256. 256. 256. 256. nan nan 256. 256. 256. 256. 256.
256. 256. 256. nan nan 256. 256. 256. 256. 256. 256. 256.
256. nan nan 256. 256. 256. 256. 256. 256. 256. 256. nan
nan 256. 256. 256. 256. 256. 256. 256. 256. nan nan 256.
256. 256. 256. 256. 256. 256. 256. nan nan 256. 256. 256.
256. 256. 256. 256. 256. nan nan nan nan nan nan nan
nan nan nan nan]
所以我在這裏顯然有一些NaN值,但我不確定它們來自哪裏。
這是一個警告,而不是一個錯誤,所以你得到一個情節了。如果沒有問題,真的很難知道發生了什麼,即我們沒有您的數據。最好嘗試在代碼中生成一些數據來重現問題。 – ImportanceOfBeingErnest
如果你轉到源代碼並將'print(xa)'放在違規行之前,你會看到該數組包含nan值,這是因爲你的'Z'包含nan值。 – Reti43
@ImportanceOfBeingErnest感謝您的快速響應和編輯我的文章。我確實向您提供了我的數據。 [上面的鏈接](https://pastebin.com/raw/UsQ5eArF)包含我所有的xyz座標。 – TheJD