我正在做一些聚类分析,并希望使用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()
我对此的解决方案是按如下所示提供报价:
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()
答案 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)
等,因此我无法使用您的代码,但是以上提示必定会有所帮助。