Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在matplotlib三维绘图上设置刻度_Python 3.x_Matplotlib - Fatal编程技术网

Python 3.x 在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

我正在做一些聚类分析,并希望使用matplotlib将结果可视化。在大多数情况下,这是可行的。但是,我正在努力控制轴上的记号位置。也就是说,y轴上的蜱虫过于拥挤,我想把它们变薄。我曾尝试使用numpy arrange函数为滴答声提供一个范围,但这不起作用

我不知道这是因为我对matplotlib不够熟悉,还是因为这是三维绘图的问题。无论如何,我已经尝试了所有我能在堆栈上找到的解决方案,但似乎没有任何效果

我的代码:

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']
等等,我无法使用您的代码,但上面的提示肯定会有所帮助。

很好!这一步就解决了问题。真的非常感谢–非常感谢!