文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

cycler属性组合包怎么在matplotlib中使用

2023-06-06 12:53

关注

这篇文章给大家介绍cycler属性组合包怎么在matplotlib中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

matplotlib的依赖包cycler是matplotlib自主开发的属性组合包,功能与内置模块itertools很多函数非常相似,可用于创建特殊的迭代器。matpoltlib在属性设置底层中使用了cycler包,典型的案例就是在多数据系列绘图中循环使用颜色、线条等外观设置。使用cycler可以避免构造多重循环,更简便、灵活的组合属性。

cycler包概述

cycler包的API主要有三个:

基本功能

cycler的基本功能是方便的将一个可哈希的对象(hashable)与一系列值进行映射。
根据下面的例子可知,cycler对象可以将关键字参数名称与序列进行一一映射,cycler对象是一个迭代器,迭代输出的对象为字典结构,键为关键字参数名称,值为序列的元素。

In [1]: from cycler import cyclerIn [2]: color_cycle = cycler(color=['r', 'g', 'b'])In [3]: color_cycleOut[3]: cycler('color', ['r', 'g', 'b'])In [4]: len(color_cycle)Out[4]: 3In [5]: color_cycle.keysOut[5]: {'color'}In [6]: for i in color_cycle:  ...:   print(i)  ...:{'color': 'r'}{'color': 'g'}{'color': 'b'}

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对象相乘)

两个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对象与整数相乘)

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对象拼接

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对象切片

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

from cycler import cyclerimport matplotlib.pyplot as pltcolor_cycle = cycler(color=['r', 'g', 'b'])m_cycle = cycler(marker=['s', 'o'])m_c = m_cycle * color_cyclefor i, j in enumerate(m_c):  print(i, j)  plt.plot([i, i], **j)plt.show()

cycler属性组合包怎么在matplotlib中使用

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'}

常规多重循环方法

import matplotlib.pyplot as pltmarker=['s', 'o']color=['r', 'g', 'b']n=0for i in marker:  for j in color:    plt.plot([n, n], marker=i, c=j)    n = n+1plt.show()

关于cycler属性组合包怎么在matplotlib中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯