通过cycler实现属性的自动映射

在matplotlib中,axes.prop_cycle属性用于设置属性映射,例如颜色的自动分配。cycler模块允许自定义属性循环,包括颜色、线条宽度和样式,提高绘图效率。通过Cycler定义颜色循环,并通过set_prop_cycle应用到axes对象,实现多条线条的个性化视觉效果。文章还探讨了如何叠加多个属性循环以及确保不同循环长度一致的重要性。
摘要由CSDN通过智能技术生成

欢迎关注”生信修炼手册”!

在matplotlib中,默认存在一个颜色 的自动映射机制,当我们绘制多条直线时,会通过这个颜色映射机制来为每条直线赋予不同的颜色,代码如下

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> x = np.linspace(0, 3 * np.pi, 50)
>>> offsets = np.linspace(0, 2 * np.pi, 4, endpoint=False)
>>> for i in range(6):
...     y = np.sin(x) + i
...     plt.plot(x, y)
...

>>> plt.show()

输出结果如下

具体是如何实现这个功能的呢?其实是通过axes.prop_cycle这个属性,该属性用于设置一些基本的属性映射,默认情况下,设置了颜色的自动映射

>>> import matplotlib
>>> matplotlib.rcParams['axes.prop_cycle']
cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])

可以看到,默认的映射属性为颜色,然后对应了一系列的颜色梯度,当我们绘制多条颜色时,每条直线的颜色对应该颜色梯度中的一个具体颜色。当线条个数超出了颜色梯度的范围时,会自动循环利用,代码如下

>>> import matplotlib.pyplot as plt
>>> import numpy as np

>>> x = np.linspace(0, 3 * np.pi, 50)
>>>
>>> offsets = np.linspace(0, 2 * np.pi, 4, endpoint=False)
>>> for i in range(20):
... y = np.sin(x) + i
... plt.plot(x, y)
...

>>> plt.show()

输出结果如下

可以看到,超过10条之后,线条的颜色出现了循环重复。通过cyler模块,我们可以自定义这样的属性循环,用法如下

>>> from cycler import cycler
>>> custom_cycler = cycler(color=['c', 'm', 'y
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值