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

Axes3D图中通过for循环绘制散点无显示问题求助

解决3D散点图循环绘制无显示的问题

问题根源

你的数据中存在异常极大负值(例如masa第二个子列表里的-696000.0、-691500.0),同时轴范围设置时机错误,导致正常数据点被挤出可视区域,最终图表显示空白。

解决方案

  1. 过滤无效数据:移除不符合业务逻辑的异常值(Payload质量不可能为负,需同步删除masa、costo、volumen中对应位置的无效数据)
  2. 调整轴范围设置时机:将轴范围配置代码放到所有散点绘制完成之后,确保视图基于有效数据计算

修改后的代码示例

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 原始数据
masa = [[700, 1150, 2000, 4000, 3600, 6000, 8500, 7800], [1065, 867, 2365, -696000.0, 3317, 6365, -691500.0, 7517]]
volumen = [[0.4, 1.0, 2.0, 2.0, 2.0, 3.0, 5.0, 4.0], [0.25913, 0.815087, 1.85913, 1.3, 1.8150870000000001, 2.85913, 4.3, 3.815087]]
costo = [[33600000000, 31248000000, 139200000000, 136442100000, 198360000000, 424800000000, 405712320000, 594720000000], [41238120000, 35532000000, 155021820000, 161632080000, 207234000000, 456989220000, 456960900000, 612774000000]]

# 过滤无效数据:移除masa为负的点,同步删除对应costo和volumen的元素
filtered_masa = []
filtered_costo = []
filtered_volumen = []
for m_list, c_list, v_list in zip(masa, costo, volumen):
    valid_indices = [i for i, m in enumerate(m_list) if m >= 0]
    filtered_masa.append([m_list[i] for i in valid_indices])
    filtered_costo.append([c_list[i] for i in valid_indices])
    filtered_volumen.append([v_list[i] for i in valid_indices])

fig = plt.figure(2)
ax = fig.add_subplot(111, projection='3d')
ax.set_ylabel('Masa Disponible para Payload (g)')
ax.set_zlabel('Volumen Disponible para Payload (U)')
ax.set_xlabel('Costo $USD')
ax.view_init(20, -120)

# 循环绘制过滤后的有效散点
for count in range(len(filtered_masa)):
    ax.scatter(filtered_costo[count], filtered_masa[count], filtered_volumen[count])

# 绘制完成后再设置轴范围
ax.set_ylim3d(bottom=0, top=12000)
ax.set_xlim3d(left=0)
ax.set_zlim3d(bottom=0, top=6)

plt.show()

说明

  • 异常值会导致matplotlib自动计算视图范围时,把正常数据点压缩到几乎不可见的区域,即使手动设置轴范围,提前设置也可能被后续绘制的异常点干扰。
  • 过滤无效数据后再绘制,结合后置的轴范围设置,就能确保所有有效散点都显示在可视区域内。

内容的提问来源于stack exchange,提问作者Nico Sepulveda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:00:43