Python matplotlib中的适当变异比例值

Python matplotlib中的适当变异比例值,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我想知道matplotlib中的关键参数mutational_scale;在用于绘制箭头的matplotlib.patches.FancyArrowPatch情况下,mutational_scale默认设置为1。从文档中: 标量,可选(默认值:1) 用于缩放箭头样式属性(例如头部长度)的值 当我在两个大小为300的散射点之间绘制箭头时,如下所示: import matplotlib.pyplot as plt import matplotlib as mpl fig, ax = plt.sub

我想知道
matplotlib
中的关键参数
mutational_scale
;在用于绘制箭头的
matplotlib.patches.FancyArrowPatch
情况下,
mutational_scale
默认设置为
1
。从文档中:

标量,可选(默认值:1)

用于缩放箭头样式属性(例如头部长度)的值

当我在两个大小为300的散射点之间绘制箭头时,如下所示:

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots()
ax.scatter([0,1],[0,1], s=300)
arrow = mpl.patches.FancyArrowPatch((0,0), (1,1), arrowstyle='-|>')
plt.show()
箭头不可见

但是,当我使用:

arrow = mpl.patches.FancyArrowPatch((0,0), (1,1), arrowstyle='-|>', mutational_aspect=20)
我得到了正确的箭。

我的猜测是,整体数字的比例比1大,接近20,使得箭头在变异比例为1时不可见,但在使用20时可见。但这只是一个猜测

如果是这样,是否有办法知道整个图形的突变比例,以确定箭头的正确比例值?

在小节中 文档中提供了
arrowstyle
参数。对于它所说的
-|>
样式

-|>
头部长度=0.4,头部宽度=0.2

这意味着箭头的头部是
0.4*变异度
长而
2*0.2*变异度
宽。单位是点

由于
FancyArrowPatch
es设计用于注释,因此在绘制注释时,突变比例将设置为fontsize(以点为单位)。例如,对于15磅的fontsize,
突变\u比例=15

当在自己的电脑上使用
FancyRowPatch
时,以点为单位设置所需的大小

arrow = mpl.patches.FancyArrowPatch((0,1), (1,1), arrowstyle='-|>', mutation_scale=15)
这将创建一个箭头,箭头头全宽
2*0.2*15=6

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(dpi=100)
ax.set_xlim([-0.6,5])
for i in [5,10,15,20,25]:
    ax.scatter([0,1],[i,i], s=(2*.2*i)**2)
    arrow = mpl.patches.FancyArrowPatch((0,i), (1,i), arrowstyle='-|>',
                                        mutation_scale=i)
    ax.add_patch(arrow)
    ax.text(1.2,i,"mutation_scale = {}".format(i), 
            va="center")
plt.show()

或者,您可以直接以点为单位指定头部长度和头部宽度

arrow = mpl.patches.FancyArrowPatch((0,1), (1,1),
                    arrowstyle='-|>,head_width=3,head_length=6')
因此,以下内容将产生与上述相同的图像:

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(dpi=100)
ax.set_xlim([-0.6,5])
for i in [5,10,15,20,25]:
    ax.scatter([0,1],[i,i], s=(2*.2*i)**2)
    arrow = mpl.patches.FancyArrowPatch((0,i), (1,i), 
                        arrowstyle='-|>,head_width={},head_length={}'.format(i/5.,.4*i))
    ax.add_patch(arrow)
    ax.text(1.2,i,"mutation_scale = {}".format(i), 
            va="center")
plt.show()

谢谢你的回答,
2*0.2*变异量表
是打字错误吗(
0.2*变异量表
)?或者为什么箭头宽度的系数
2
?0.2是箭头的一半宽度,因此箭头头是2*0.2宽。