python - 如何一次更改多个子图的颜色?

标签 python matplotlib

我正在遍历一堆包含各种测量值的 CSV 文件。

每个文件可能来自 4 个不同数据源之一。

在每个文件中,我将数据合并到每月数据集中,然后将其绘制在 3x4 网格中。保存此图后,循环继续并对下一个文件执行相同操作。

这部分我已经弄清楚了,但是我想为图表添加一个视觉线索,以了解它是什么数据。据我了解(并尝试过)

plt.subplot(4,3,1)
plt.hist(Jan_Data,facecolor='Red')
plt.ylabel('value count')
plt.title('January')

确实有效,但是通过这种方式,我必须将 facecolor='Red' 手动添加到每 12 个子图中。在这种情况下,遍历这些图是行不通的,因为我只希望 ylabel 用于最左边的图,而 xlabel 用于底行。

在开头设置facecolor

fig = plt.figure(figsize=(20,15),facecolor='Red')

不起作用,因为它现在只更改 20 x 15 图形的背景颜色,随后在我将它保存为 PNG 时被忽略,因为它只设置为屏幕输出。

那么对于 plt.hist(... 或者 plt.savefig(... 是否只有一个简单的setthecolorofallbars='Red' 命令我丢失,还是我应该将其复制粘贴到所有十二个月?

最佳答案

您可以使用 mpl.rc("axes", color_cycle="red") 为所有轴设置默认颜色循环。

在这个小玩具示例中,我使用 with mpl.rc_context block 将 mpl.rc 的效果限制为仅 block 。这样您就不会破坏整个 session 的默认参数。

import matplotlib as mpl
import matplotlib.pylab as plt
import numpy as np
np.random.seed(42)

# create some toy data
n, m = 2, 2
data = []
for i in range(n*m):
    data.append(np.random.rand(30))

# and do the plotting
with mpl.rc_context():
    mpl.rc("axes", color_cycle="red")
    fig, axes = plt.subplots(n, m, figsize=(8,8))
    for ax, d in zip(axes.flat, data):
        ax.hist(d)

plot

关于python - 如何一次更改多个子图的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671056/

相关文章:

python - WTForms 上的 UnicodeDecodeError

python - 为什么不能迭代?

python - 发生异常 : TypeError:only size-1 arrays can be converted to Python scalars

matplotlib - 如何在 Python 中将 2D DICOM 切片转换为 3D 图像

python - 无法使用 pyenv ipython 笔记本导入 matplotlib

python - 使用 Groupby 将 value_counts 存储在 Dask Dataframe 的新列中

python - 在 centos 上安装 scipy 模块

python - 了解如何使用 BeautifulSoup 进行网页抓取

python - 在 matplotlib 中使用透明度和多种颜色显示 3D 条形图

python - Matplotlib:如何使背景透明?