如何获取Matplotlib颜色循环状态

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

是否可以查询matplotlib颜色周期的当前状态?换句话说,是否有一个函数get_cycle_state会以以下方式表现?

>>> plot(x1, y1)
>>> plot(x2, y2)
>>> state = get_cycle_state()
>>> print state
2

在这里,我期望状态是下一个颜色的索引,这个颜色将在一个图中使用。或者,如果它返回下一个颜色(上面示例中默认周期的“r”),那也可以。

提问于
用户回答回答于

import matplotlib.pyplot as plt
import numpy as np

def custom_plot(x, y, **kwargs):
    ax = kwargs.pop('ax', plt.gca())
    base_line, = ax.plot(x, y, **kwargs)
    ax.fill_between(x, 0.9*y, 1.1*y, facecolor=base_line.get_color(), alpha=0.5)

x = np.linspace(0, 1, 10)
custom_plot(x, x)
custom_plot(x, 2*x)
custom_plot(x, -x, color='yellow', lw=3)

plt.show()

这不是唯一的方法,但它比试图得到之前绘制的线的颜色更干净,在这种情况下。

用户回答回答于

注意:在matplotlib的最新版本中(>=1.5)_get_lines已经改变了。您现在需要使用next(ax._get_lines.prop_cycler)['color']在Python 2或3中(或ax._get_lines.prop_cycler.next()['color']Python 2)从颜色周期中获取下一个颜色。

扫码关注云+社区