我想知道mutational_scale
中关键参数matplotlib
的目的;如果matplotlib.patches.FancyArrowPatch
用于绘制箭头,则mutational_scale
默认设置为1
。来自文档:
标量,可选(默认值:1)
将缩放arrowstyle属性(例如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时可见。但这只是一个猜测。
如果是这样,有没有办法知道整个数字的变异缩放,以决定箭头的正确缩放值?
答案 0 :(得分:1)
在annotating-with-arrow小节中
在文档中,显示了arrowstyle
参数。对于它所说的-|>
样式
-|>
head_length = 0.4,head_width = 0.2
这意味着箭头的长度为0.4*mutation_scale
长且2*0.2*mutation_scale
宽。单位是积分。
由于FancyArrowPatch
es旨在与注释一起使用,因此在绘制注释时,突变比例将设置为点的fontsize。例如。对于15磅的字体,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()
的箭头。
arrow = mpl.patches.FancyArrowPatch((0,1), (1,1),
arrowstyle='-|>,head_width=3,head_length=6')
或者,您可以直接指定head_length和head_width,
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()
以下将产生与上述相同的图像:
server.py