matplotlib 在三维图上设置刻度

tyky79it  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(216)

我正在做一些聚类分析,并希望使用matplotlib可视化结果。在大多数情况下,这是工作OK。然而,我正在努力控制刻度在轴上的位置。也就是说,y轴上的刻度太拥挤了,我想把它们去掉。我尝试使用numpy arrow函数为刻度提供一个范围,但这不起作用。
我不知道这是因为我对matplotlib不够熟悉,还是因为3D绘图的问题。无论如何,我已经尝试了所有的解决方案,我可以找到的Stack和似乎没有工作。
我的代码:

import matplotlib.pyplot as plt
import matplotlib.cm as cm

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(data['col_1'], data['col_2'], data['col_3'], c = data.index,  cmap = cm.winter, s=60)
ax.view_init(15, 240)
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z- Axis')
plt.title('Sample Plot')
plt.show()

我的解决方案是提供刻度如下:

ticks = np.arange(0.3, 0.7, 0.02)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(data['col_1'], data['col_2'], data['col_3'], c = data.index,  cmap = cm.winter, s=60)
ax.view_init(15, 240)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_zticks(ticks)
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z- Axis')
plt.title('Sample Bad Plot')
plt.show()

然而,这只会产生下面的热混乱。有什么帮助吗?

y3bcpkx1

y3bcpkx11#

问题是x值大约在0.54-0.68范围内,y值大约在0.34-0.42范围内,z值大约在0.55-0.63范围内。现在在第二个代码中,定义ticks = np.arange(0.3, 0.7, 0.02),它创建了从0.30.68的刻度,然后使用ax.set_xticks(ticks)指定这些值在x、y、z轴上显示,以此类推。之所以会出现这种混乱,是因为您提供的ticks值超出了实际x、y、z数据点的范围。由于您只对细化y轴刻度感兴趣,因此您可以
ticks = np.arange(0.34, 0.44, 0.02)
然后将y轴的刻度设置为
ax.set_yticks(ticks) .
如果你不想手动指定0.340.44的数字,你可以找到最大和最小的y值,然后使用类似ticks = np.arange(min_value, max_value, 0.02)的值。
因为我没有访问你的原始数据data['col_1']等等,我不能玩你的代码,但上面的提示肯定会有帮助。

相关问题