如何在matplotlib.axes.Axes.arrow中使用kwargs python 2.7

时间:2017-12-27 19:42:53

标签: python python-2.7 matplotlib plot

我正在使用我已经修改过的arrow_simple_demo.py here

import matplotlib.pyplot as plt

ax = plt.axes()
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1)

但是,我想使用kwarg将箭头的线条样式更改为虚线。箭头文档表明它是可能的。 arrow docs

所以我试图给**箭头** kwargs参数导入:

kwargs = {linestyle:'--'}

现在我的代码看起来像这样:

import matplotlib.pyplot as plt

ax = plt.axes()
kwargs={linestyle:'--'}
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, **kwargs)

但结果是:

NameError: name 'linestyle' is not defined

我想知道是否有人可以告诉我我是否正确使用了kwargs,以及我是否需要从matplotlib的补丁类中导入Patch以使其工作。 “其他有效的kwargs(继承自:class:Patch)”这句话在kwargs列表上方的箭头文档中让我觉得可能是必要的。我也一直在查看补丁文档来解决这个问题。 here

编辑:

当我将linestyle键作为字符串传递时代码完成,但我没有得到我希望的虚线箭头。

import matplotlib.pyplot as plt
ax = plt.axes()
kwargs={'linestyle':'--'}
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, **kwargs)

见图:

arrow plot solid line

1 个答案:

答案 0 :(得分:0)

kwargs字典的键应该是一个字符串。在你的代码中,python查找一个名为linestyle的对象,该对象不存在。

kwargs = {'linestyle':'--'}

不幸的是,这样做并不足以产生预期的效果。 行是虚线,但问题是箭头是用闭合路径绘制的,并且破折号重叠在一起,这取消了效果。您可以通过绘制较粗的箭头来查看虚线。

ax = plt.axes()
kwargs={'linestyle':'--', 'lw':2, 'width':0.05}
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, **kwargs)

enter image description here

如果您想要一个简单的虚线箭头,则必须使用更简单的箭头,使用annotate

ax = plt.axes()
kwargs={'linestyle':'--', 'lw':2}
ax.annotate("", xy=(0.5, 0.5), xytext=(0, 0),
    arrowprops=dict(arrowstyle="->", **kwargs))

enter image description here