在 python/matplotlib 中:
当我设置“标记”属性循环(例如)时,颜色循环只产生一个恒定的(蓝色)颜色。请参见下面的示例。
from matplotlib import pyplot as plt
import numpy as np
fig, (ax1,ax2) = plt.subplots(nrows=2)
ax1.set_prop_cycle(marker=['o','s','x','+','*'])
xx = np.arange(10)
for n in xx:
ax1.plot(xx, n*xx)
ax2.plot(xx, n*xx)
plt.show()
我怎样才能让颜色循环保持它原来的样子,就像在第二个轴上一样?
请您参考如下方法:
属性循环器可以包含不同的属性,例如颜色、标记、线型等。当通过 ax1.set_prop_cycle(marker=[...]) 设置属性循环器时,您会创建一个新的仅包含标记属性但不包含颜色的属性循环器。
为了拥有标记和颜色属性,您需要同时设置这两个属性,或者通过您要更改的属性来扩展当前属性循环器。后者如下所示。
from matplotlib import pyplot as plt
import numpy as np
fig, (ax1,ax2) = plt.subplots(nrows=2)
cycler = plt.rcParams["axes.prop_cycle"]
cycler += plt.cycler(marker=['o','s','x','+','*'])
ax1.set_prop_cycle(cycler)
colors = plt.rcParams["axes.prop_cycle"].by_key()["color"]
cycler2 = plt.cycler(color=colors)
cycler2 *= plt.cycler(marker=['o','s','x','+','*'])
ax2.set_prop_cycle(cycler2)
xx = np.arange(10)
for n in xx:
ax1.plot(xx, n*xx)
ax2.plot(xx, n*xx)
plt.show()
注意这里加法和乘法的区别。
