데이터 세트를 분석 한 다음 xyz 데이터를 출력하는 스크립트가 있습니다. 데이터의 분포를 이해하기 위해이 데이터를 3D 플롯으로 시각화하고 싶습니다. 내가 무슨 일이든하기 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()
내 코드입니다 : 내가 출력 잘못된 라인, 전 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 값이 분명히 있지만 분명히 어디에서 왔는지 모르겠습니다. .
이것은 따라서 플롯을받을 수 있나요 경고가 아닌 오류입니다. 문제의 [mcve]가 없으면 어떤 일이 진행되는지 알기가 정말 어렵습니다. 즉, 귀하의 데이터가 없습니다. 문제를 재현하기 위해 코드 내에 일부 데이터를 생성하는 것이 가장 좋습니다. – ImportanceOfBeingErnest
소스 코드로 가서 문제의 라인 앞에'print (xa)'를 넣으면, 배열에 나노 값이 포함되어있는 것을 볼 수 있습니다. 그 이유는'Z'에 나노 값이 포함되어 있기 때문입니다. – Reti43
@ImportanceOfBeingErnest 빠른 응답을하고 내 게시물을 편집 해 주셔서 감사합니다. 나는 나의 자료를 당신에게 제공했다. [위의 링크] (https://pastebin.com/raw/UsQ5eArF)에는 내가 가지고있는 모든 xyz 좌표가 포함되어 있습니다. – TheJD