我想知道关键参数mutational_scale
在matplotlib
中的用途;对于用于绘制箭头的matplotlib.patches.FancyArrowPatch
,默认情况下mutational_scale
设置为1
。从医生那里:
标量,可选(默认值: 1) 值,其中箭头样式的属性(例如,head_length)将被缩放。
当我在大小为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时可见,但这只是猜测。
如果是这样的话,是否有一种方法可以知道整体图形的变异比例,以确定箭头的适当标度值?
发布于 2017-11-21 01:46:39
在文档中的带箭头注解小节中,给出了arrowstyle
参数。对于-|>
风格,上面写着
-|>
head_length=0.4,head_width=0.2
这意味着箭头的头部是0.4*mutation_scale
long,2*0.2*mutation_scale
宽。单位就是点。
由于FancyArrowPatch
es被设计为与注释一起使用,因此在绘制注释时,突变标度将设置为以点表示的字体大小。例如,对于一个15pt的字体大小,mutation_scale=15
。
因此,当在自己的FancyArrowPatch
上使用它时,可以设置所需的大小(点)
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()
或者,您可以直接以点指定head_length和head_width,
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()
https://stackoverflow.com/questions/47383130
复制相似问题