You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter中Python代码无法显示3D聚类图问题求助

问题原因及解决方法

核心问题1:重复使用同一特征作为两个坐标轴

你代码里的3D散点图调用:

ax.scatter(X[:, 0], X[:, 4], X[:, 4], c=asignar,s=10)
ax.scatter(C[:, 0], C[:, 4], C[:, 4], marker='*', c=colores, s=10)

这里y轴和z轴用的是同一个特征(X[:,4]),所有点都会落在y=z的平面上。如果Jupyter的3D图初始视角刚好正对这个平面,就会显示成空白。

解决:把z轴换成数据集里的另一个不同特征,比如X[:,1]或其他列,示例:

ax.scatter(X[:, 0], X[:, 4], X[:, 1], c=asignar,s=10)
ax.scatter(C[:, 0], C[:, 4], C[:, 1], marker='*', c=colores, s=10)

核心问题2:缺少显式的图像渲染指令

虽然Jupyter部分环境会自动渲染图像,但添加plt.show()能确保图像正常显示,尤其是在%matplotlib notebook模式下。在绘图代码末尾加上:

plt.show()

可选优化:更新3D轴的创建方式

新版本matplotlib推荐用add_subplot创建3D轴,替代旧的Axes3D(fig)写法,避免兼容性问题:

fig = plt.figure()
ax = fig.add_subplot(projection='3d')  # 替换原来的ax = Axes3D(fig)

额外排查步骤

  • 检查数据范围:运行print(pd.DataFrame(X).describe()),确认各特征的数值范围是否差异过大(比如某列数值是其他列的1000倍),如果是,先对数据做标准化(from sklearn.preprocessing import StandardScaler; X = StandardScaler().fit_transform(X))再绘图。
  • 切换绘图后端:如果%matplotlib notebook还是有问题,可以尝试换成%matplotlib inline(静态图)或%matplotlib widget(交互式,部分环境支持)。

内容的提问来源于stack exchange,提问作者Another.Chemist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:07:03