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宽。