我一直想利用Python matplotlib包画比例尺,就比如画下面这张图(来源于唐海宝老师jcvi包里画的染色体核型图)中的比例尺
之前我以为有专门的画图函数可以实现这样的功能,但是查询很久都没找到。今天我阅读jcvichromosome.py 中源码发现,这个比例尺是唐海宝老师用ax.plot函数画短线制作出来的。
先画一个竖线,再利用循环加短横线。 数字和单位都是通过ax.text添加
from matplotlib import pyplot as plt
ax = plt.gca()
plt.ylim(0,50)
plt.xlim(0,50)
length = 33
ax.plot((3, 3), (1, 34), "-", color="lightslategray")
x = 3
yy = 1
for i in range(0,length, 2):
if i % 10:
ax.plot((x, x + 0.2), (yy, yy), "-", color="lightslategray")
else:
ax.plot((x - 0.2, x + 0.2), (yy, yy), "-", color="lightslategray", lw=2)
ax.text(x + 0.2 + 0.15, yy, i, color="gray", va="center")
yy += 2
ax.text(x + 0.5 , 34 + 2, "Mb", color="gray", va="center", ha="center")
plt.show()
image.png
网友评论