mplot3d - 如何显示次刻度?

6

如何在使用mplot3d/axes3d图形时显示(打开)三维表面图中的次要刻度线?

我可以使用以下方式定义主刻度线位置:

ax.w_zaxis.set_major_locator(MultipleLocator(10))

同样地,我猜想我可以使用以下方式定义次刻度线:
ax.w_zaxis.set_minor_locator(MultipleLocator(2))

这似乎定义了次要刻度定位器,但实际上它并没有在我的3D图中打开它们。我如何在我的3D坐标轴上打开次要刻度?

2个回答

3
据我所知,mplot3d中的小刻度标记并未完全实现。我在matplotlib代码中查看的位置是Your_Python_Lib_site-packages\mpl_toolkits\mplot3d\axis3d.py文件中的draw()函数。我只看到绘制主要刻度标记的代码,没有绘制小刻度标记的代码。修改代码让它能够绘制小刻度标记似乎并不难。我想知道matplotlib开发人员是否知道mplot3d中的小刻度标记无法正常工作。

1
感谢您的回复。这就解释了为什么它们似乎不能在我的图表上工作。这真是太遗憾了,因为次刻度线会非常有用!也许他们会在未来的版本中实现它? - Mark
3
在我发现这篇文章之前,我一直在为同样的问题苦恼。不知道是否已经解决了? - Arraval
1
@Arraval 我现在也在处理同样的问题。使用导入import matplotlib.ticker as ticker,2D情况下可以使用ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())ax.yaxis.set_minor_locator(ticker.AutoMinorLocator())。但是在3D中做同样的事情并添加ax.zaxis.set_minor_locator(ticker.AutoMinorLocator())不起作用(即使对于x和y轴也是如此)。这个问题是最近看起来相关的事情。自从这个问题发布到SO以来已经过去了约10年... - user13276519
1
@Arraval,此功能现已添加。请参见我的下面的答案 - iacob

1
截至v3.3版本,可以通过在以下设置中将minor=True来实现:
ax.set_xticks(minor=True)
ax.set_yticks(minor=True)
ax.set_zticks(minor=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接