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

Python3如何基于值为元组的字典创建3D图表?

解决基于字典数据的3D图表绘制问题

嘿,我明白你现在卡在把字典数据转成3D图表这一步了——别担心,咱们一步步来搞定它!核心思路就是先把字典里的键值对拆解成3D图表需要的三个轴数据:X(元组第一个值)、Y(元组第二个值)、Z(字典的键,也就是MSE值)。下面我会用两种常用工具实现,你可以按需选择:

方法一:用Matplotlib绘制静态3D散点图

Matplotlib的mplot3d模块能轻松实现静态3D可视化,步骤很清晰:

  1. 整理字典数据
    先把你给出的示例转成标准Python字典:
mse_data = {
    80178.37739073468: (2, 5),
    81623.18006660603: (13, 14),
    82583.3021359235: (8, 16),
    83491.34222215343: (9, 8),
    83724.73005402873: (8, 14),
    83856.2891246289: (7, 8),
    83984.92825308126: (6, 5),
    84314.30519882984: (13, 16),
    84577.4110193269: (4, 11),
    86338.86146117302: (6, 20)
}
  1. 提取三轴数据
    遍历字典,把对应的值分别存入三个列表:
x = []
y = []
z = []
for mse_value, (x_coord, y_coord) in mse_data.items():
    z.append(mse_value)
    x.append(x_coord)
    y.append(y_coord)
  1. 绘制3D散点图
    调用Matplotlib的3D绘图接口:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建画布和3D坐标轴
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(projection='3d')

# 绘制散点,设置颜色和标记样式
ax.scatter(x, y, z, c='darkred', marker='^', s=100)

# 设置轴标签和标题
ax.set_xlabel('X Axis (First Tuple Value)', fontsize=12)
ax.set_ylabel('Y Axis (Second Tuple Value)', fontsize=12)
ax.set_zlabel('Z Axis (MSE)', fontsize=12)
ax.set_title('3D Plot of MSE vs Tuple Parameters', fontsize=14, pad=20)

# 显示图表
plt.show()

方法二:用Plotly绘制交互式3D图

如果需要可以旋转、缩放的交互式图表,Plotly会更合适:

import plotly.express as px
import pandas as pd

# 把数据转成Plotly偏好的DataFrame格式
df = pd.DataFrame({
    'X_Value': x,
    'Y_Value': y,
    'MSE': z
})

# 创建交互式3D散点图
fig = px.scatter_3d(df, 
                    x='X_Value', 
                    y='Y_Value', 
                    z='MSE',
                    color='MSE',  # 用MSE值区分点的颜色
                    size_max=15,
                    title='Interactive 3D MSE Visualization')

# 调整轴标签布局
fig.update_layout(scene=dict(
                    xaxis_title='X Axis (First Tuple Value)',
                    yaxis_title='Y Axis (Second Tuple Value)',
                    zaxis_title='MSE'))

# 显示交互式图表
fig.show()

小提示

  • 如果你后续数据量变大,想绘制平滑曲面图,需要先用scipy.interpolate做网格插值,但目前你的离散数据用散点图展示最直观。
  • 两种方法的核心都是从字典里提取三轴数据,这一步搞定后,后续绘图就和普通3D图表流程一致啦。

内容的提问来源于stack exchange,提问作者Jay Py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:31:08