首页 > 解决方案 > 使用 matploblib 在 3dplot 中记录比例

问题描述

我想创建一个 z 轴为对数刻度的 3D 图。这是一个示例代码。

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def fun(x, y):
    return x**2 + y

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)
zs = np.array([fun(x,y) for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)

ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()

我试过 ax.set_zscale('log') 和 ax.zaxis.set_scale('log') 但这不起作用。不过应该是可以的。如果我使用 ax.plot_surface(X, Y, np.log(Z)) ,则 z 刻度关闭。对于这个看似简单的问题,我找不到答案。我希望你能帮忙。

标签: pythonmatplotlib

解决方案


推荐阅读