Matplotlib 3D:轴边界总是太大(未正确设置 lims)

问题描述 投票:0回答:1

我在 matplotlib 中进行 3D 绘图时遇到问题(bug?),我想知道是否有人可以帮忙解决?

从 matplotlib gallery 示例图可以看出(例如来自:https://matplotlib.org/examples/mplot3d/surface3d_demo.html),当用户手动设置轴限制时,会在限制,轴边界延伸一点:

我希望轴显示 1.01 刻度标签,但这应该是立方体的顶点(其上方没有灰色空间/黑色轴线)。请问这样可以吗?

作为一个单独的、更次要的请求,我想在网格边缘画一条实心黑线以使其突出。然而,这并不比修复边界重要。

作为参考,这里是制作上述绘图的代码:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np


fig = plt.figure()
ax = fig.gca(projection='3d')

# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=False)

# Customize the z axis.
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

# Add a color bar which maps values to colors.
fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()
python matplotlib plot 3d matplotlib.mlab
1个回答
0
投票

您的第一个请求看起来是这个问题的重复,有一些答案:在 3D 图中删除轴边距

对于您的第二个请求,Matplotlib 3.8.0 中的此功能可能会满足您的需求:https://matplotlib.org/stable/users/prev_whats_new/whats_new_3.8.0.html#specify-ticks-and-axis -3d 绘图的标签位置

© www.soinside.com 2019 - 2024. All rights reserved.