python绘制柱状图,柱状图颜色渐变
时间: 2025-05-21 17:38:25 浏览: 23
### 使用 Python Matplotlib 绘制渐变色柱状图
以下是通过 `matplotlib` 和 `numpy` 实现带有渐变颜色的柱状图的方法。此方法基于 `imshow()` 函数来创建平滑的颜色过渡效果。
#### 方法概述
为了实现渐变色的效果,可以通过以下方式完成:
1. 创建一个二维数组用于存储颜色数据。
2. 利用 `imshow()` 函数显示该数组作为背景,并设置插值参数以获得平滑的渐变效果。
3. 添加柱状图覆盖在渐变背景之上。
下面是完整的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
# 数据准备
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 5, 6]
# 定义渐变颜色映射 (Color Map)
colors = [(1, 0, 0), (0, 1, 0)] # 红到绿
cmap_name = 'custom_red_green'
cm = LinearSegmentedColormap.from_list(cmap_name, colors)
# 设置图像大小
fig, ax = plt.subplots(figsize=(8, 6))
# 创建渐变背景
gradient = np.linspace(0, 1, 256).reshape(1, -1) # 颜色梯度
gradient = np.vstack((gradient, gradient)) # 堆叠形成矩形区域
ax.imshow(gradient, aspect='auto', cmap=cm, extent=[-0.5, len(categories)-0.5, 0, max(values)+1])
# 绘制柱状图
bars = ax.bar(range(len(categories)), values, align='center', edgecolor='black')
# 自定义每根柱子的颜色
for i, bar in enumerate(bars):
height = bar.get_height()
bar.set_color(cm(height / max(values))) # 根据高度分配颜色
# 图表美化
ax.set_xticks(range(len(categories)))
ax.set_xticklabels(categories)
ax.set_ylabel('Values')
ax.set_title('Gradient Bar Chart with Color Mapping')
# 显示颜色条
sm = plt.cm.ScalarMappable(cmap=cm, norm=plt.Normalize(vmin=0, vmax=max(values)))
sm.set_array([])
cbar = fig.colorbar(sm, orientation="vertical", pad=0.1)
cbar.ax.set_ylabel('Value Scale')
plt.show()
```
以上代码实现了如下功能:
- **渐变背景**:使用 `imshow()` 函数生成红到绿的线性渐变背景[^1]。
- **动态配色**:根据柱状图的高度自动调整颜色[^2]。
- **边缘修饰**:为柱状图添加黑色边框以便更清晰地展示边界[^1]。
#### 结果说明
运行上述代码后会得到一张图表,其中柱状图的颜色随着其高度变化而逐渐改变,从而呈现出一种视觉上的连续渐变效果。
---
###
阅读全文
相关推荐



















