Ich habe ein Skript, das einen Datensatz analysiert und dann xyz-Daten ausgibt. Um die Verteilung der Daten zu verstehen, möchte ich sie in einem 3D-Diagramm visualisieren. Da ich keine Erfahrung, was auch immer mit der Verwendung von matplotlib habe ich kopiert einfach den Code aus here und erwartet, dass es mit my text file zu arbeiten, die wie folgt aussieht:Matplotlib RuntimeWarning Anzeige eines 3D-Plots
-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
...
aber sobald ich das Skript starten, erhalte ich die folgenden Fehler, die dem colorbar führt falsch angezeigt wird:
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
Ferner weist die Handlung diese Dreiecke an seinen Rändern. Ich bin mir nicht sicher, ob sie auch eine Folge des oben genannten Fehlers sind. Diese ist die Ausgabe:
Hier ist mein Code:
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: ich den Quellcode bearbeitet xa vor der beanstandeten Zeile zu drucken, die Ausgänge:
[ 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]
Also habe ich klar einige NaN-Werte hier, aber ich bin mir nicht sicher woher sie kommen .
Dies ist eine Warnung, kein Fehler, damit Sie ein Grundstück erhalten tun aus. Es ist wirklich schwer zu wissen, was ohne ein Problem passiert, d. H. Wir haben keine Daten. Am besten versuchen Sie, einige Daten innerhalb des Codes zu generieren, um das Problem zu reproduzieren. – ImportanceOfBeingErnest
Wenn Sie zum Quellcode gehen und 'print (xa)' vor die betreffende Zeile setzen, sehen Sie, dass das Array Nan-Werte enthält, weil Ihr 'Z' Nan Werte enthält. – Reti43
@ImportanceOfBeingErnest Vielen Dank für Ihre schnelle Antwort und für die Bearbeitung meines Posts. Ich habe Ihnen meine Daten zur Verfügung gestellt. Der [Link oben] (https://pastebin.com/raw/UsQ5eArF) enthält alle xyz-Koordinaten, die ich habe. – TheJD