python - 使用 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 刻度关闭。对于这个看似简单的问题,我找不到答案。我希望你能帮忙。
解决方案
推荐阅读
- python - 将循环数据保存到数据框中的新列
- database - 如何计算扫描的索引页面和扫描的关系页面
- javascript - 如果单击外部,则 JQuery 显示/隐藏和折叠
- html - jQuery CSS 框架的正确样式
- flutter - 验证时 globalkey formstate 返回 false
- facebook-graph-api - 有人用stackpost发脸书吗?
- python - Django - 重定向后传递对象 ID
- tensorflow - 实现一个 minmax maxpooling 层
- angular - 返回 ngIf 部分的顶部
- node.js - 工作线程的存根模块