Ich habe einen Pandas-Datenrahmen mit vier Spalten von Messdaten. Ich möchte ein 3D-Oberflächendiagramm mit dem Zeilenindex als X, dem Spaltenindex als Y und den Daten als Z erstellen. (Die Daten in jeder Spalte sind eine Reihe von diskreten Messungen, die von einem Test ausgegeben werden, der alle Werte durchläuft von X für jede Kategorie Y)Matplotlib 3D-Oberflächendiagramm aus 2D Pandas Datenrahmen
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 4), columns=['A', 'B', 'C', 'D'])
print(df)
A B C D
0 0.791692 -0.945571 0.183304 2.039369
1 -0.474666 1.117902 -0.483240 0.137620
2 1.448765 0.228217 0.294523 0.728543
3 -0.196164 0.898117 -1.770550 1.259608
4 0.646730 -0.366295 -0.893671 -0.745815
ich versuchte, das df in eine numpy Raster Umwandlung wie nachstehend unter Verwendung np.meshgrid aber nicht sicher, ob ich wirklich verstehen, was erforderlich ist, oder wenn ich die df Indizes auf diese Weise verwenden kann .
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = df.columns
y = df.index
X,Y = np.meshgrid(x,y)
Z = df
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
Ich habe das Matplotlib 3D-Tutorial und verwandte Antworten hier gelesen, bin aber immer noch fest. Wäre sehr dankbar, wenn mir bitte jemand in die richtige Richtung zeigen könnte.
Doh! Hatte mich selbst davon überzeugt, dass der Ansatz völlig falsch war und daher das Offensichtliche übersehen. Vielen Dank! – Violet