hist 和 axvline 不遵循颜色循环/matplotlib 样式

Posted

技术标签:

【中文标题】hist 和 axvline 不遵循颜色循环/matplotlib 样式【英文标题】:hist and axvline do not follow color cycle / matplotlib style 【发布时间】:2018-07-06 08:59:21 【问题描述】:

我正在尝试绘制分布图,它的意思是:

import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')

numbers = np.random.rand(100)
fig, ax = plt.subplots()
ax.hist(numbers)
ax.axvline(numbers.mean())

这将在红色分布的顶部绘制一条红线。重要的是,我想使用我的配色方案 (gglot) 中的颜色,因此我不想手动选择颜色,甚至是颜色循环。

Recently,我了解到如果我想“强制”颜色循环器使用下一个颜色,我可以这样做

next(ax._get_lines.prop_cycler)

但是,在 hist 和 axvline 之间添加这条线在这里没有帮助。我如何“强制”histaxvline 遵循我的风格?

【问题讨论】:

histaxvline 之间使用this answer 对我有用 @DavidG 抱歉,到底什么有效? 您是否要让axvline 使用颜色循环中的下一种颜色? 我也有同样的问题。 axvline 不尊重风格 【参考方案1】:

你需要通过使用获取循环中的下一个颜色

next(ax._get_lines.prop_cycler)['color']

然后您需要在axvlinecolor= 参数中显式使用它:

plt.style.use('ggplot')

numbers = np.random.rand(100)
fig, ax = plt.subplots()
ax.hist(numbers)

ax.axvline(numbers.mean(), color = next(ax._get_lines.prop_cycler)['color'])

plt.show()

这给出了:

【讨论】:

以上是关于hist 和 axvline 不遵循颜色循环/matplotlib 样式的主要内容,如果未能解决你的问题,请参考以下文章

python matplotlib画的直方图怎么加两条竖线做参考线

怎样用C语言实现图片的RGB颜色空间向Lab颜色空间的转化??

R中的部分颜色直方图

直方图显示图例中垂直线的值

如何用 matplotlib 画一条线?

颜色查找表