如何用Python从字典列表绘制3D条形图?
基于字典列表数据绘制3D条形图的可行方案
当然可以实现,用Python的matplotlib库结合其mplot3d模块就能完成,下面是具体步骤和代码示例:
1. 准备依赖库
先导入所需的工具库:
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D
2. 数据转换
将你的字典列表提取为数组格式,方便绘图时调用:
# 替换为你实际的字典列表数据 data = [ {"a": 1.2, "b": 3.4, "c": 5.6}, {"a": 2.3, "b": 4.5, "c": 6.7}, {"a": 3.4, "b": 5.6, "c": 7.8} ] # 提取各字段的数值数组 a_vals = np.array([item["a"] for item in data]) b_vals = np.array([item["b"] for item in data]) c_vals = np.array([item["c"] for item in data])
3. 绘制3D条形图
使用bar3d函数创建3D条形图,参数对应条形的位置、尺寸和高度:
# 设置条形的宽度(x方向)和深度(y方向) dx = dy = 0.5 # 创建画布和3D坐标轴 fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(111, projection='3d') # 绘制3D条形:x轴对应a值,y轴对应b值,z轴高度为c值 ax.bar3d( a_vals - dx/2, # x起始位置(居中对齐) b_vals - dy/2, # y起始位置(居中对齐) np.zeros_like(c_vals), # z起始位置(从底部0开始) dx, dy, c_vals # 条形的宽度、深度、高度 ) # 设置坐标轴标签 ax.set_xlabel('a') ax.set_ylabel('b') ax.set_zlabel('c') # 调整视角,让图形更清晰 ax.view_init(elev=20, azim=45) # 显示图形 plt.show()
关键说明
- 如果你想自定义条形颜色,可以给
bar3d添加color参数,比如color='#4287f5' - 若数据量较大,可调整
dx和dy的数值避免条形重叠 view_init函数用来调整3D视角,elev是仰角,azim是方位角,可按需修改
内容的提问来源于stack exchange,提问作者Charmee Mehta
相关产品推荐
相关产品推荐

