Ho cercato in alto e in basso una soluzione a questo semplice problema ma non riesco a trovarlo da nessuna parte! Ci sono un sacco di post che descrivono in dettaglio il semilog/loglog di dati in 2D, ad es. plt.setxscale ('log') comunque sono interessato ad usare scale di log su un grafico 3d (mplot3d).Tracciare trama di superficie mplot3d/axes3D xyz con scala di registro?
Non ho il codice esatto a portata di mano e quindi non posso postarlo qui, tuttavia il semplice esempio di seguito dovrebbe essere sufficiente per spiegare la situazione. Attualmente sto usando Matplotlib 0.99.1, ma a breve dovrei aggiornarlo alla 1.0.0 - So che dovrò aggiornare il mio codice per l'implementazione di mplot3d.
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FixedLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-5, 5, 0.025)
Y = np.arange(-5, 5, 0.025)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, extend3d=True)
ax.set_zlim3d(-1.01, 1.01)
ax.w_zaxis.set_major_locator(LinearLocator(10))
ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.03f'))
fig.colorbar(surf)
plt.show()
Il codice qui sopra tracciare bene in 3D, tuttavia i tre scale (X, Y, Z) sono tutti lineari. I miei dati "Y" si estendono su diversi ordini di grandezza (come 9!), Quindi sarebbe molto utile tracciarlo su una scala di registro. Posso aggirare il problema prendendo il log della 'Y', ricreando la matrice numpy e tracciando il log (Y) su una scala lineare, ma in vero stile python sto cercando una soluzione più intelligente che tracci i dati su una scala di registro.
È possibile produrre un grafico di superficie 3D dei miei dati XYZ utilizzando le scale di registro, preferibilmente X & Z su scale lineari e Y su una scala di registro?
Qualsiasi aiuto sarebbe molto apprezzato. Per favore perdona qualsiasi errore evidente nell'esempio sopra, come detto non ho il mio codice esatto da avere e quindi ho alterato un esempio di galleria matplotlib dalla mia memoria.
Grazie
la risposta sopra afferma che questa risposta è sbagliata. hai una risposta a questo? – dbliss