python 三维柱状图
时间: 2025-04-16 21:07:12 浏览: 27
### 使用 Python 创建三维柱状图
对于希望利用 `matplotlib` 或者更现代的 `plotly` 库来创建三维柱形图的需求,以下是两种实现方式。
#### 方法一:基于 Matplotlib 的解决方案
Matplotlib 提供了一个名为 Axes3D 的模块用于支持三维图形绘制。下面是一个简单例子展示如何制作一个基本的 3D 杆状图表:
```python
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 构造数据集
for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
xs = np.arange(20)
ys = np.random.rand(20)
# 设置颜色和透明度(alpha)
ax.bar(xs, ys, zs=z, zdir='y', color=c, alpha=0.8)
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')
plt.show()
```
这段代码展示了怎样通过指定不同的 Z 值层叠多个二维条形图从而形成视觉上的第三维度效果[^1]。
#### 方法二:采用 Plotly 实现更加互动式的 3D Bar Chart
Plotly 是另一个强大的可视化工具包,在处理复杂的数据表示方面具有优势,特别是当涉及到交互性和动态更新的时候。这里有一个简单的实例说明如何构建这样的图表:
```python
import plotly.graph_objects as go
data = [
['A', 'B', 'C'],
[20, 14, 23],
[25, 17, 29]
]
fig = go.Figure(data=[
go.Bar(
name='Group A',
x=data[0], y=data[1],
base=[-i for i in range(len(data[1]))],
orientation='h'
),
go.Bar(
name='Group B',
x=data[0], y=data[2],
base=[len(data)-1-i for i in range(len(data[2]))],
orientation='h'
)
])
fig.update_layout(barmode='stack') # 将两个组堆叠在一起
fig.update_traces(width=.5) # 调整宽度使它们看起来像真正的3D对象
fig.show() # 显示图表
```
此段脚本定义了两组不同高度的水平条形,并通过调整基底位置 (`base`) 和方向 (`orientation`) 参数让这些条形呈现出立体感;同时设置了布局模式为 "stacked" 让所有的条形能够按照顺序排列而不是重叠显示[^2]。
值得注意的是,虽然上述第二个案例并非严格意义上的传统XYZ轴坐标系下的直方体结构,但是由于其直观的表现形式以及易于理解的特点,也被广泛认为是一种有效的3D柱状图表达方式。
阅读全文
相关推荐


















