rod*_*dor 3 python matplotlib python-3.x
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()
Run Code Online (Sandbox Code Playgroud)
箭头是不可见的。
但是,当我使用:
arrow = mpl.patches.FancyArrowPatch((0,0), (1,1), arrowstyle='-|>', mutational_aspect=20)
Run Code Online (Sandbox Code Playgroud)
我的猜测是,整个数字按大于 1 的系数缩放,接近 20,使得箭头在突变比例为 1 时不可见,但在使用 20 时可见。但这只是一个猜测。
如果是这样,有没有办法知道整个图形的突变缩放来决定箭头的适当缩放值?
在文档中的“用箭头注释”小节中,arrowstyle介绍了参数。对于-|>它所说的风格
-|>头长=0.4,头宽=0.2
这意味着箭头的头部0.4*mutation_scale又长又2*0.2*mutation_scale宽。单位是点。
由于FancyArrowPatches 被设计为与注释一起使用,因此在绘制注释时,突变比例将设置为以点为单位的字体大小。例如,对于 15 pt 字体大小,mutation_scale=15.
FancyArrowPatch当单独使用时,请设置所需的大小(以磅为单位)
arrow = mpl.patches.FancyArrowPatch((0,1), (1,1), arrowstyle='-|>', mutation_scale=15)
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有完整箭头宽度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()
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接以点为单位指定 head_length 和 head_width,
arrow = mpl.patches.FancyArrowPatch((0,1), (1,1),
arrowstyle='-|>,head_width=3,head_length=6')
Run Code Online (Sandbox Code Playgroud)
因此,以下将产生与上面相同的图像:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |