例如,如果lines1lines2的形状为(3,101)

 plt.plot(x, lines1, linewidth=3)
 plt.plot(x, lines2, linewidth=1)


我有一条宽度等于3的蓝,绿,红线,一条宽度等于1的青色,品红色和黄线。

由于lines1中的数据成对连接到lines2中的数据,
我想重置控制两个Cycler指令之间线条颜色的plot对象,以便我得到蓝色,绿色,红色线条,宽度= 3,然后是蓝色,绿色,红色线条,宽度= 1线对之间存在视觉连接(颜色)。

所讨论的Cycler对象是axes的属性,恰好是prop_cycle属性

In [28]: plt.rcParams['axes.prop_cycle']
Out[28]: cycler('color', ['b', 'g', 'r', 'c', 'm', 'y', 'k'])


是否可以重置此Cycler对象?

最佳答案

提出问题意味着对问题有更好的理解,不是吗?

下面的语句可以解决问题,

plt.gca().set_prop_cycle(plt.rcParams['axes.prop_cycle'])


<edit>更简单,plt.gca().set_prop_cycle(None),请参见下面的附录。</edit>

matplotlib具有内部一致性...

例:

In [46]: %matplotlib
In [47]: import matplotlib.pyplot as plt
In [48]: import numpy as np
In [49]: x = np.linspace(0, 7, 101)
In [50]: y1 = np.array([np.sin(x+0.2*i*x) for i in range(2)])
In [51]: y2 = 0.9*y1+0.1
In [52]: plt.plot(x, y1.T, linewidth=3)
Out[52]:
[<matplotlib.lines.Line2D at 0x7f5118b759b0>,
 <matplotlib.lines.Line2D at 0x7f5118b75b38>]
In [53]: plt.gca().set_prop_cycle(plt.rcParams['axes.prop_cycle'])
In [54]: plt.plot(x, y2.T, linewidth=1)
Out[54]:
[<matplotlib.lines.Line2D at 0x7f511a3bec50>,
 <matplotlib.lines.Line2D at 0x7f5118b1e898>]
In [55]:


python - 是否可以重置Cycler对象-LMLPHP给我

附录

最后,我阅读了.set_prop_cycle()的文档字符串


  在此Axes上为任何将来的绘图命令设置属性周期。

set_prop_cycle(arg)
set_prop_cycle(label, itr)
set_prop_cycle(label1=itr1[, label2=itr2[, ...]])

  
  形式1只是设置给定的Cycler对象。
          [...]
  参量
  arg:循环仪
  设置给定的Cycler。
  也可以None重置为当前样式定义的循环。
          [...]


我的代码可以更简单

plt.plot(x, y1, linewidth=3)
plt.gca.set_prop_cycle(None)
plt.plot(x, y2, linewidth=1)

关于python - 是否可以重置Cycler对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38111332/

10-12 20:06