在MatPlotLib中检索自定义破折号

时间:2016-06-27 20:23:59

标签: matplotlib

关于如何使用Line2D.set_linestyleLine2D.set_dashes在matplotlib行中设置自定义破折号,有很多问题。但是,我似乎找不到一种在设置后检索破折号模式的方法。

以下是在主站点上设置破折号的示例,我将在下面参考:http://matplotlib.org/examples/lines_bars_and_markers/line_demo_dash_control.html。为清晰起见,此处复制了代码:

"""
Demo of a simple plot with a custom dashed line.

A Line object's ``set_dashes`` method allows you to specify dashes with
a series of on/off lengths (in points).
"""
import numpy as np
import matplotlib.pyplot as plt


x = np.linspace(0, 10)
line, = plt.plot(x, np.sin(x), '--', linewidth=2)

dashes = [10, 5, 100, 5]  # 10 points on, 5 off, 100 on, 5 off
line.set_dashes(dashes)

plt.show()

没有line.get_dashes方法。致电line.get_linestyle会返回'--'。如何使用MatPlotLib 1.5.1检索实际的破折号模式?

更新

对于那些关心我为什么要问的人:我正在尝试使用dashrule包创建一个从line-style到LaTeX的简单转换器。最初的灵感来自question / answer。如果我可以完全避免使用linestyle并直接获得破折号和线宽,那将是很好的。

我已经学会了用tikz package制作标记,所以最终能够将图例元素添加到轴标签会很不错。考虑到更多的研究和肘部油脂,我希望将所有内容组合到PR到MatPlotLib。

更新#2

似乎有Line2D_dashSeq的“私有”属性,其中包含我要查找的序列。但是,如果我设置其中一个预设样式,则此属性的值不会更改:例如

>>> line.set_linestyle((0, (2, 5, 7, 3)))
>>> line.get_linestyle()  # This seems expected behavior for custom dash
'--'
>>> line._dashSeq         # This is what I want
(2, 5, 7, 3)
>>> line.set_linestyle('--')
>>> line.get_linestyle()  # This reflects reality now
'--'
>>> line._dashSeq         # This no longer does
(2, 5, 7, 3)

问题在于我现在无法区分这两种风格(预设与自定义),所以我的问题仍然存在。

0 个答案:

没有答案