我可以在 matplotlib 中循环使用线条样式吗
我知道如何在 matplotlib 中循环显示颜色列表。但是是否可以对线条样式(纯线、点线、虚线等)做类似的事情?我需要这样做,以便我的图表在打印时更容易阅读。有什么建议如何做到这一点吗?
I know how to cycle through a list of colors in matplotlib. But is it possible to do something similar with line styles (plain, dotted, dashed, etc.)? I'd need to do that so my graphs would be easier to read when printed. Any suggestions how to do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
像这样的事情可能会成功:
结果:
编辑更新版本 (v2.22)
有关更多详细信息,请参阅有关“使用 Cycler 进行样式设置”的 matplotlib 教程
要查看输出,请单击“显示图”
Something like this might do the trick:
Result:
Edit for newer version (v2.22)
For more detailed information consult the matplotlib tutorial on "Styling with cycler"
To see the output click "show figure"
即将推出的 matplotlib v1.5 将针对新的 prop_cycler 功能弃用 color_cycle:http://matplotlib.org/devdocs/users/whats_new.html?highlight=prop_cycle#added-axes-prop-cycle-key-to-rcparams
然后继续创建您的轴和图!
The upcoming matplotlib v1.5 will deprecate color_cycle for the new prop_cycler feature: http://matplotlib.org/devdocs/users/whats_new.html?highlight=prop_cycle#added-axes-prop-cycle-key-to-rcparams
Then go ahead and create your axes and plots!
这里有一些使用循环器开发样式集的示例,
可以添加循环器以给出组合(红色带有“-”,蓝色带有“--”,...)
直接在轴上使用:
循环器可以相乘(http://matplotlib.org/cycler/) 提供更广泛的独特样式
另请参阅:http://matplotlib.org/examples/color/color_cycle_demo.html
here's a few examples of using the cyclers to develop sets of styles
cyclers can be added to give compositions (red with '-', blue with '--', ...)
direct use on Axes:
cyclers can be multiplied (http://matplotlib.org/cycler/) to give a wider range of unique styles
see also: http://matplotlib.org/examples/color/color_cycle_demo.html
如果您希望更改自动进行,您可以将这两行添加到
matplotlib的axes.py文件:
查找该行:
并在下面添加以下行:
并查找该行:
并添加该行:
我想您可以对标记执行相同的操作。
If you want the change to be automatic you can add this two lines in
the axes.py file of matplotlib:
Look for that line:
and add the following line underneath:
And look for the line:
and add the line:
I guess you can do the same for marker.
我通常使用基本颜色和线条样式的组合来表示不同的数据集。假设我们有 16 个数据集,每四个数据集属于某个组(具有某些共同属性),那么当我们用共同的颜色表示每个组但其成员用不同的线条样式表示时,很容易可视化。
I usually use a combination of basic colors and linestyles to represent different data sets. Suppose we have 16 data sets, each four data sets belonging to some group (having some property in common), then it is easy to visualize when we represent each group with a common color but its members with different line styles.
我使用与此类似的代码来循环不同的线条样式。默认情况下,颜色在 7 个绘图后重复。
I use code similar to this one to cycle through different linestyles. By default colours repeat after 7 plots.
与 Avaris 图相似但不同......
Similar to Avaris graphs but different....
我喜欢使用循环器的答案,但使用最新版本的 matplotlib (3.7)您可以简单地传递值列表并让 matplotlib 构建循环器。例如,这是有效的:
并且它更整洁(例如与此相比),您不需要导入循环仪。
I like the answers making use of cyclers, but with the latest version of matplotlib (3.7) you can simply pass lists of values and let matplotlib build the cyclers. For example, this works:
and it's a little neater (e.g. compared to this one), you don't need to import cycler.
正如 @jasmit 所提到的,在 matplotlib 3.7 中不需要导入循环。这是一个完整的示例:
As is mentioned by @jasmit, you do not need import cycle in matplotlib 3.7. Here is a complete example: