时间:2021-05-22
matplotlib的依赖包cycler是matplotlib自主开发的属性组合包,功能与内置模块itertools很多函数非常相似,可用于创建特殊的迭代器。matpoltlib在属性设置底层中使用了cycler包,典型的案例就是在多数据系列绘图中循环使用颜色、线条等外观设置。使用cycler可以避免构造多重循环,更简便、灵活的组合属性。
cycler包的API主要有三个:
cycler的基本功能是方便的将一个可哈希的对象(hashable)与一系列值进行映射。
根据下面的例子可知,cycler对象可以将关键字参数名称与序列进行一一映射,cycler对象是一个迭代器,迭代输出的对象为字典结构,键为关键字参数名称,值为序列的元素。
cycler的基本功能与循环非常相似,cycler的强大在于创建复杂的属性组合。
两个cycler对象进行加法运算,相当于将两个对象的元素按次序一一组合,功能类似于Python内置的zip()函数。
In [1]: from cycler import cyclerIn [2]: color_cycle = cycler(color=['r', 'g', 'b'])In [3]: lw_cycle = cycler(lw=range(1, 4))In [4]: wc = lw_cycle + color_cycleIn [5]: for s in wc: ...: print(s) ...:{'lw': 1, 'color': 'r'}{'lw': 2, 'color': 'g'}{'lw': 3, 'color': 'b'} cycler函数传递多个关键字参数就相当于对这些参数进行加法运算In [1]: from cycler import cyclerIn [2]: wc = cycler(c=['r', 'g', 'b'], lw=range(3))In [3]: for s in wc: ...: print(s) ...:{'c': 'r', 'lw': 0}{'c': 'g', 'lw': 1}{'c': 'b', 'lw': 2}两个cycler对象进行乘法运算,相当于求两个对象的元素的笛卡尔积,功能类似于Python内置的itertools.product()函数。
In [1]: from cycler import cyclerIn [2]: color_cycle = cycler(color=['r', 'g', 'b'])In [3]: m_cycle = cycler(marker=['s', 'o'])In [4]: m_c = m_cycle * color_cycleIn [5]: for s in m_c: ...: print(s) ...:{'marker': 's', 'color': 'r'}{'marker': 's', 'color': 'g'}{'marker': 's', 'color': 'b'}{'marker': 'o', 'color': 'r'}{'marker': 'o', 'color': 'g'}{'marker': 'o', 'color': 'b'}cycler对象与整数n相乘,相当于遍历n次cycler对象。
In [1]: from cycler import cyclerIn [2]: color_cycle = cycler(color=['r', 'g', 'b'])In [3]: color_cycle * 2Out[3]: cycler('color', ['r', 'g', 'b', 'r', 'g', 'b'])cycler对象拼接有一个前提就是两个对象必须有相同的键!
In [1]: from cycler import cyclerIn [2]: color_cycle = cycler(color=['r', 'g', 'b'])In [3]: color_cycle2 = cycler(color=['c', 'm', 'y', 'k'])In [4]: color_cycle = color_cycle.concat(color_cycle2)In [5]: color_cycleOut[6]: cycler('color', ['r', 'g', 'b', 'c', 'm', 'y', 'k'])In [7]: color_cycle3 = cycler(gray=['0.5'])In [8]: color_cycle = color_cycle.concat(color_cycle3)---------------------------------------------------------------------------ValueError Traceback (most recent call last)ValueError: Keys do not match: Intersection: set() Disjoint: {'color', 'gray'}cycler对象支持切片操作。
In [1]: from cycler import cyclerIn [2]: color_cycle = cycler(color=['r', 'g', 'b'])In [3]: color_cycle[:2]Out[3]: cycler('color', ['r', 'g'])In [4]: color_cycle[::-1]Out[4]: cycler('color', ['b', 'g', 'r'])使用cycler
0 {'marker': 's', 'color': 'r'}
1 {'marker': 's', 'color': 'g'}
2 {'marker': 's', 'color': 'b'}
3 {'marker': 'o', 'color': 'r'}
4 {'marker': 'o', 'color': 'g'}
5 {'marker': 'o', 'color': 'b'}
相对而言,使用cycler避免了多重循环,当属性种类较多时更简洁,更加灵活。
到此这篇关于matplotlib之属性组合包(cycler)的使用的文章就介绍到这了,更多相关matplotlib 属性组合包内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、获取matplotlib的安装位置导入matplotlib,打印__file__属性,即可显示matplotlib包的安装位置。In[1]:importma
matplotlib是可以组合许多的小图,放在一张大图里面显示的.使用到的方法叫作subplot.均匀画图使用import导入matplotlib.pyplot
seaborn包是对matplotlib的增强版,需要安装matplotlib后才能使用。所有图形都用plt.show()来显示出来,也可以使用下面的创建画布f
问题产生:pycharm→settings→Projectinterpreter→下载matplotlib包运行代码,出现以下提示:找不到‘matplotlib
闭包定义可以通过内层函数访问外层函数的作用域的组合叫做闭包。闭包使用场景使用闭包来实现防抖functiondebounce(callback,time){var