2017-12-27 1406 views
0

我从arrow_simple_demo.py here我已经修改为工作:如何使用kwargs在matplotlib.axes.Axes.arrow蟒蛇2.7

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,并且是否需要t o从matplotlib的补丁类中导入补丁以使其工作。在kwargs列表上方的箭头文档中,“其他有效的kwargs(继承自:class:Patch)”这个陈述让我觉得这可能是必要的。我也一直在寻找补丁文档来解决这个问题。 here

编辑:

代码时,我通过了线型键作为一个字符串,但我没有得到我所期待的虚线箭头线完成。

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

回答

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

+0

哦,这样一个简单的错误!代码现在完成,但出于某种原因仍然是一条坚实的线? – AF2k15

+0

请参阅我的编辑以反映您的建议。你能否确认你的系统上的箭头线仍然稳定?它仍然显示我的坚实。 – AF2k15

+0

在我的回答中查看更多信息 –