在matplotlib 3-D图上设置刻度线

时间:2018-08-19 12:49:08

标签: python-3.x matplotlib

我正在做一些聚类分析,并希望使用matplotlib可视化结果。在大多数情况下,这很正常。但是,我正在努力控制刻度线在轴上的位置。也就是说,y轴上的刻度线过分拥挤,我想细化它们。我尝试使用numpy排列功能为刻度线提供范围,但这不起作用。

我不知道这是因为我对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()

Plot has bunched up numbers on y-axis

我对此的解决方案是按如下所示提供报价:

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()

但是,这只会在下面产生热点。有什么帮助吗? This is the resulting mess

1 个答案:

答案 0 :(得分:1)

问题是您的x值大约在 const mapKey = JSON.stringify(Array.from(set1)); 范围内,您的y值在0.54-0.68范围内,而z值在0.34-0.42范围内。现在,在第二个代码中,定义0.55-0.63,它会创建从ticks = np.arange(0.3, 0.7, 0.02)0.3的刻度,然后使用0.68分配这些值以在x,y,z轴上显示等等。因为您提供的ax.set_xticks(ticks)值超出了实际x,y,z数据点的范围,所以您会陷入困境。由于您只对精炼ticks轴刻度感兴趣,因此您可以

y

,然后将ticks = np.arange(0.34, 0.44, 0.02)轴的刻度设置为

y

如果您不想手动指定数字ax.set_yticks(ticks)0.34,则可以找到最大值和最小值0.44并使用类似y的方式。 / p>

由于我无权访问您的原始数据ticks = np.arange(min_value, max_value, 0.02)等,因此我无法使用您的代码,但是以上提示必定会有所帮助。