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 之间添加这条线在这里没有帮助。我如何“强制”hist
和 axvline
遵循我的风格?
【问题讨论】:
在hist
和axvline
之间使用this answer 对我有用
@DavidG 抱歉,到底什么有效?
您是否要让axvline
使用颜色循环中的下一种颜色?
我也有同样的问题。 axvline
不尊重风格
【参考方案1】:
你需要通过使用获取循环中的下一个颜色
next(ax._get_lines.prop_cycler)['color']
然后您需要在axvline
的color=
参数中显式使用它:
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画的直方图怎么加两条竖线做参考线