Python 3.x 在matplotlib三维绘图上设置刻度
我正在做一些聚类分析,并希望使用matplotlib将结果可视化。在大多数情况下,这是可行的。但是,我正在努力控制轴上的记号位置。也就是说,y轴上的蜱虫过于拥挤,我想把它们变薄。我曾尝试使用numpy arrange函数为滴答声提供一个范围,但这不起作用 我不知道这是因为我对matplotlib不够熟悉,还是因为这是三维绘图的问题。无论如何,我已经尝试了所有我能在堆栈上找到的解决方案,但似乎没有任何效果 我的代码:Python 3.x 在matplotlib三维绘图上设置刻度,python-3.x,matplotlib,Python 3.x,Matplotlib,我正在做一些聚类分析,并希望使用matplotlib将结果可视化。在大多数情况下,这是可行的。但是,我正在努力控制轴上的记号位置。也就是说,y轴上的蜱虫过于拥挤,我想把它们变薄。我曾尝试使用numpy arrange函数为滴答声提供一个范围,但这不起作用 我不知道这是因为我对matplotlib不够熟悉,还是因为这是三维绘图的问题。无论如何,我已经尝试了所有我能在堆栈上找到的解决方案,但似乎没有任何效果 我的代码: import matplotlib.pyplot as plt import m
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()
然而,这只会产生下面的热混乱。有什么帮助吗?
问题在于,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.3
到0.68
的ticks,然后使用ax.set_xticks(ticks)
等将这些值分配到x、y、z轴上显示。之所以会出现这种混乱,是因为您提供的ticks
值超出了实际x、y、z数据点的范围。因为您只对细化y
轴刻度感兴趣,所以可以这样做
ticks=np.arange(0.34,0.44,0.02)
然后只需将y
轴的刻度设置为
ax.set\u yticks(刻度)
如果不想手动指定数字0.34
和0.44
,可以找到最大值和最小值y
并使用类似ticks=np.arange(最小值,最大值,0.02)
由于我无法访问您的原始数据
数据['col_1']
等等,我无法使用您的代码,但上面的提示肯定会有所帮助。很好!这一步就解决了问题。真的非常感谢–非常感谢!