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

AF2*_*k15 3 python plot matplotlib python-2.7

我正在这里的arrow_simple_demo.py 工作,我已经将其修改为:

import matplotlib.pyplot as plt

ax = plt.axes()
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1)
Run Code Online (Sandbox Code Playgroud)

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

所以我尝试给 arrow 导入 **kwargs 参数:

kwargs = {linestyle:'--'}
Run Code Online (Sandbox Code Playgroud)

现在我的代码如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

但结果是:

NameError: name 'linestyle' is not defined
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

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)
Run Code Online (Sandbox Code Playgroud)

看图片:

箭头图实线

Diz*_*ahi 7

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

kwargs = {'linestyle':'--'}
Run Code Online (Sandbox Code Playgroud)

不幸的是,仅仅做还不足以产生预期的效果。该线虚线,但问题是箭头是用闭合路径绘制的,并且虚线相互重叠,从而抵消了效果。您可以通过绘制较粗的箭头来看到虚线。

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

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

在此输入图像描述