Python matplotlib 3D柱状图函数
如何在Axes3D中将字符串添加到坐标轴,而不是数字?
我刚开始使用matplotlib这个库。我用Axes3D来绘图,类似于他们网站上给的例子(http://matplotlib.sourceforge.net/examples/mplot3d/bars3d_demo.html)。需要注意的是,必须使用最新版本(matplotlib 0.99.1),否则坐标轴会有点奇怪。这个例子使用了以下代码:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = Axes3D(fig)
for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
xs = np.arange(20)
ys = np.random.rand(20)
ax.bar(xs, ys, zs=z, zdir='y', color=c, alpha=0.8)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
现在说说我的问题,我无法将坐标轴重命名为我想要的名字。我需要在x轴和z轴(深度)上使用字符串名称,而不是数字。我尝试使用这个命令:
ax.set_xticklabels('First staple',(0,0))
我没有收到错误信息,但也没有显示字符串。如果有人能回答这个问题,我会非常高兴!
2 个回答
0
我还获取了轴的数据,处理完后再把它设置回渲染器,结果发现这样做对我来说简单多了 ;) 除此之外,NerdyNick 说的也很对。
2
你其实走在正确的路上。不过,你需要传递一个列表或元组给set_xticklabels(),而不是一个字符串。你可能还想用set_xticks()来调整标签的中心位置。
你可能还会发现get_xmajorticklabels()这个函数很有用。它会返回已经显示的刻度标签。所以你也可以根据它的结果来调整值。