Plotten mplot3d / axes3D xyz-plot mit logarithmischer Skalierung?

Ich habe gesucht hoch und niedrig für eine Lösung für dieses problem, aber ich kann nicht finden es überall! Es gibt Lasten der Beiträge detailliert semilog /loglog Auftragung von Daten in 2D z.B. plt.setxscale('log') aber ich bin interessiert in der Verwendung von logarithmischen Skalen auf einem 3d-plot(mplot3d).

Habe ich nicht den genauen code zu hand und kann so nicht hier posten, aber das einfache Beispiel unten sollte genug sein, um die situation zu erklären. Ich bin derzeit mit Matplotlib 0.99.1, sollte aber in Kürze ein Update auf 1.0.0 - ich weiß, ich werde zu aktualisieren meinem code für die mplot3d Umsetzung.

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()

Dem obigen code wird der plot in Ordnung in 3D, doch die drei Skalen (X, Y, Z) sind alle linear. Mein 'Y' Daten erstreckt sich über mehrere Größenordnungen (wie 9!), es wäre also sehr nützlich, um zu zeichnen Sie es auf eine log-Skala. Ich kann dies umgehen, indem der log der 'Y', wieder die numpy-array und die Auswertung der log(Y) auf eine lineare Skala, sondern in echten python-Stil ich bin auf der Suche nach INTELLIGENTEREN Lösung, die zeichnet die Daten auf einer log-Skala.

Ist es möglich, eine 3D-plot von meiner XYZ-Daten mit log-Skalen, im Idealfall würde ich mag X & Z auf linearen Skalen und Y auf eine logarithmische Skala?

Jegliche Hilfe würde sehr geschätzt werden. Bitte verzeiht mir offensichtliche Fehler in dem obigen Beispiel, wie bereits erwähnt, habe ich nicht meine genauen code zu haben und so verändert wurden, eine matplotlib Galerie Beispiel aus meiner Erinnerung.

Dank

InformationsquelleAutor Mark | 2010-10-11
Schreibe einen Kommentar