演示自定义属性循环(property-cycle)设置,以控制多线绘图的颜色和其他样式属性。
备注:可以在下面的链接找到cycler API的更完整的文档。
https://matplotlib.org/cycler/
此示例演示了两种不同的API:
1、设置指定默认属性循环的rc参数。这会影响所有后续图表域(axes)(但不会影响已创建的图表域)。
2、为一对图表域(axes)设置属性循环。
·
·
·
from cycler import cyclerimport numpy as npimport matplotlib.pyplot as plt
首先,我们将生成一些样本数据,在本例中,是四条偏移正弦曲线。
·
·
·
x = np.linspace(0, 2 * np.pi, 50)offsets = np.linspace(0, 2 * np.pi, 4, endpoint=False)yy = np.transpose([np.sin(x + phi) for phi in offsets])
现在yy已经有了形状(shape)。
·
print(yy.shape)
输出
·
(50, 4)
所以yy[:, i]是第i条偏移正弦曲线。让我们使用matplotlib.pyplot.rc()设置默认的prop_cycle。我们将通过两个循环器相加来组合颜色循环器和线型循环器。有关组合不同循环器的更多信息,请参阅本教程的底部。
·
·
·
·
·
default_cycler = (cycler(color=['r', 'g', 'b', 'y']) + cycler(linestyle=['-', '--', ':', '-.']))
plt.rc('lines', linewidth=4)plt.rc('axes', prop_cycle=default_cycler)
现在我们将生成一个具有两个图表域(axes)的图表(figure),一个图表域在另一个图表域上。在第一个图表域上,我们将使用默认的循环器绘制。在第二个图表域上,我们将使用matplotlib.axes.Axes.set_prop_cycle()设置prop_cycle,这将仅为matplotlib.axes.Axes实例设置prop_cycle。我们将使用第二个循环器,它结合了颜色循环器和线宽循环器。
·
·
·
·
·
·
·
·
·
·
·
·
·
custom_cycler = (cycler(color=['c', 'm', 'y', 'k']) + cycler(lw=[1, 2, 3, 4]))
fig, (ax0, ax1) = plt.subplots(nrows=2)ax0.plot(yy)ax0.set_title('Set default color cycle to rgby')ax1.set_prop_cycle(custom_cycler)ax1.plot(yy)ax1.set_title('Set axes color cycle to cmyk')
# Add a bit more space between the two plots.fig.subplots_adjust(hspace=0.3)plt.show()
在matplotlibrc文件或样式文件中设置prop_cycle
请记住,可以在matplotlibrc文件或样式文件(style.mplstyle)中axes.prop_cycle关键字下设置自定义循环器:
·
axes.prop_cycle : cycler(color='bgrcmyk')
多属性循环
循环器可以相加:
·
·
·
·
·
from cycler import cyclercc = (cycler(color=list('rgb')) + cycler(linestyle=['-', '--', '-.']))for d in cc: print(d)
运行结果:
·
·
·
{'color': 'r', 'linestyle': '-'}{'color': 'g', 'linestyle': '--'}{'color': 'b', 'linestyle': '-.'}
循环器可以相乘:
·
·
·
·
·
from cycler import cyclercc = (cycler(color=list('rgb')) * cycler(linestyle=['-', '--', '-.']))for d in cc: print(d)
运行结果:
·
·
·
·
·
·
·
·
·
{'color': 'r', 'linestyle': '-'}{'color': 'r', 'linestyle': '--'}{'color': 'r', 'linestyle': '-.'}{'color': 'g', 'linestyle': '-'}{'color': 'g', 'linestyle': '--'}{'color': 'g', 'linestyle': '-.'}{'color': 'b', 'linestyle': '-'}{'color': 'b', 'linestyle': '--'}{'color': 'b', 'linestyle': '-.'}
matplotlib.pyplot.rc():
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.rc.html#matplotlib.pyplot.rc
matplotlib.axes.Axes.set_prop_cycle():
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_prop_cycle.html#matplotlib.axes.Axes.set_prop_cycle
matplotlib.axes.Axes:
https://matplotlib.org/stable/api/axes_api.html#matplotlib.axes.Axes