Я искал решение этой простой проблемы, но нигде не могу его найти!Есть множество постов, подробно описывающих построение полулога / журнала событий в 2D, например, plt.setxscale ('log'), однако меня интересует использование масштабов журнала на 3D графике (mplot3d).
Я не знаюУ нас нет точного кода, поэтому вы не можете опубликовать его здесь, однако простого примера, приведенного ниже, должно быть достаточно, чтобы объяснить ситуацию.В настоящее время я использую Matplotlib 0.99.1, но вскоре должен будет обновиться до 1.0.0 - я знаю, что мне придется обновить мой код для реализации 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()
Приведенный выше код будет хорошо отображаться в3D, однако все три шкалы (X, Y, Z) являются линейными.Мои данные «Y» охватывают несколько порядков (например, 9!), Поэтому было бы очень полезно построить их в логарифмическом масштабе.Я могу обойти эту проблему, взяв журнал 'Y', воссоздав массив numpy и построив график (Y) в линейном масштабе, но в истинном стиле Python я ищу более разумное решение, которое будет отображать данные налогарифмическая шкала.
Можно ли создать трехмерный график поверхности моих данных XYZ с использованием логарифмических масштабов, в идеале я хотел бы, чтобы X и Z были в линейных масштабах, а Y - в логарифмическом масштабе?
Любая помощь будетс благодарностью.Пожалуйста, простите любые очевидные ошибки в приведенном выше примере, как уже упоминалось, у меня нет точного кода, и поэтому я изменил пример галереи matplotlib из моей памяти.
Спасибо