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

Matplotlib:如何在循环绘制直方图后统一设置颜色?

当然可以!这里是实现方法

完全可以在循环结束后、plt.show()之前统一修改直方图的颜色。Matplotlib 允许我们获取已绘制的图形元素并调整它们的样式,具体步骤如下:

方法说明

当你用plt.hist()绘制直方图时,每个直方图都会被作为一个**容器(container)**添加到当前坐标轴中。我们可以通过获取坐标轴对象,遍历这些容器来修改其中所有条形的颜色。

修改后的示例代码

import numpy as np
import matplotlib.pyplot as plt

x = np.array([[1,1,3,4],[1,4,5,6],[1,4,4,6]])
plt.figure()

# 先循环绘制所有直方图
for i in range(3):
    plt.hist(x[i])

# 获取当前坐标轴对象
ax = plt.gca()

# 方案1:给每个直方图设置不同的颜色
colors = ['#ff7f0e', '#1f77b4', '#2ca02c']  # 自定义颜色列表
for container, color in zip(ax.containers, colors):
    for patch in container.patches:
        patch.set_facecolor(color)  # 设置条形填充色
        # 可选:设置边框颜色
        # patch.set_edgecolor('black')

# 方案2:给所有直方图设置同一种颜色
# for container in ax.containers:
#     for patch in container.patches:
#         patch.set_facecolor('purple')

plt.show()

关键细节解释

  • plt.gca():获取当前的坐标轴(Axes)对象,所有绘制的图形元素都挂载在这个对象上。
  • ax.containers:包含了当前坐标轴上所有的直方图容器,每个容器对应一次plt.hist()调用生成的所有条形。
  • container.patches:每个容器中的patches属性是该直方图所有条形的集合,遍历它们就能逐个修改样式。

这样你就不用在循环内部设置颜色,而是统一在最后批量调整,非常灵活!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:20:53