【问题标题】:How to use kwargs in matplotlib.axes.Axes.arrow python 2.7如何在 matplotlib.axes.Axes.arrow python 2.7 中使用 kwargs
【发布时间】:2018-06-08 10:17:25
【问题描述】:

我正在使用 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 的补丁类中导入补丁才能使其正常工作。 kwargs 列表上方的箭头文档中的声明“其他有效 kwargs(继承自:class:Patch)”让我认为这可能是必要的。我也一直在查看补丁文档来解决这个问题。 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

【问题讨论】:

    标签: python python-2.7 matplotlib plot


    【解决方案1】:

    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)
    

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

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

    【讨论】:

    • 哦,这么简单的错误!代码现在完成了,但由于某种原因仍然是一条实线?
    • 查看我对反映您建议的问题的编辑。你能确认你的系统上的箭头线仍然是实心的吗?它仍然显示在我的身上。
    • 感谢您的精彩解释。毕竟我将不得不使用注释。
    猜你喜欢
    • 2015-09-02
    • 2018-11-06
    • 1970-01-01
    • 2020-02-03
    • 2017-11-04
    • 2010-09-12
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多