关于如何使用Line2D.set_linestyle
和Line2D.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)
问题在于我现在无法区分这两种风格(预设与自定义),所以我的问题仍然存在。