博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python绘制质粒图谱
阅读量:4580 次
发布时间:2019-06-09

本文共 1899 字,大约阅读时间需要 6 分钟。

#Author:Alex.Zhangfrom PIL import Image, ImageDraw,ImageFontimport math#创建一个图像PLASMID_LENGTH = 4361SIZE = (500, 500)CENTER = (250, 250)#‘RGB’表示该图像采用红绿蓝配色方案,元组size取值(500, 500)# 在RGB中,红色(255,0,0),绿色(0,255,0),蓝色(0,0,255)# white可以为(255,255,255)或者‘#ffffff’,黑色(0,0,0)或‘#000000’#表示图像的x和y的尺寸为多少像素,‘white’设置背景色为白色pBR322 = Image.new('RGB', SIZE, 'white')#激活绘图工具DRAW = ImageDraw.Draw(pBR322)#定义三个函数def get_angle(bp, length=PLASMID_LENGTH):    """质粒碱基的位置转换为角度"""    return bp * 360 / lengthdef coord(angle, center, radius):    """ 返回圆上点坐标 (x,y) 坐标说明: 例如point(100,100),是距左边框100像素,距顶部100像素的一个点 box(100,100,150,150),距顶部和左侧边框各100像素的50像素宽的一个方形框 """    #角度转弧度    rad = math.radians(angle)    x = int(center[0] + math.cos(rad) * radius)    y = int(center[1] + math.sin(rad) * radius)    return x, ydef draw_arrow_tip(start, direction, color):    """根据起始的角度位置画一个三角形"""    p1 = coord(start + direction, CENTER, 185)    p2 = coord(start, CENTER, 160)    p3 = coord(start, CENTER, 210)    DRAW.polygon((p1, p2, p3), fill=color)#绘制质粒TET_START, TET_END = get_angle(88), get_angle(1276)AMP_START, AMP_END = get_angle(3293), get_angle(4153)ORI_START, ORI_END = get_angle(2519), get_angle(3133)BOX = (50, 50, 450, 450)#画一个灰色的圆DRAW.pieslice(BOX, 0, 360, fill='gray')#填充一个扇形,TET_START为起始角度, TET_END终止角度,0度角在时钟的3:00位置DRAW.pieslice(BOX, TET_START, TET_END, fill='blue')#绘制一个白色圆DRAW.pieslice((80, 80, 420, 420), 0, 360, fill='white')#添加箭头draw_arrow_tip(TET_END, 10, 'blue')draw_arrow_tip(AMP_START, -10, 'orange')draw_arrow_tip(ORI_START, -10, 'darkmagenta')#添加文本arial16 = ImageFont.truetype('arial.ttf',16)DRAW.text((150, 130), "ori", fill=(0, 0, 0),font=arial16)DRAW.text((340, 130), "amp", fill=(0, 0, 0),font=arial16)DRAW.text((300, 380), "tet", fill=(0, 0, 0),font=arial16)#pBR322.save('plasmid_pBR322.png')#pBR322.save('plasmid_pBR322.jpg')pBR322.save('plasmid_pBR322.tif')

 

转载于:https://www.cnblogs.com/klausage/p/10803153.html

你可能感兴趣的文章
逆向工程——注册篇
查看>>
Python3 集合(无序的set)
查看>>
JS实现——贪吃蛇
查看>>
推荐10款免费的在线UI测试工具
查看>>
解构控制反转(IoC)和依赖注入(DI)
查看>>
燕十八redis 微博地址
查看>>
面向对象的特征有哪些方面?
查看>>
三月十一号
查看>>
JAVA基础——数据流
查看>>
OpenCV_累加一个三通道矩阵中的所有元素
查看>>
20162308 2016-2017-2 《程序设计与数据结构》第1周学习总结
查看>>
差点搞不懂快排
查看>>
STM32学习之路入门篇之指令集及cortex——m3的存储系统
查看>>
Linux 任务计划:crontab
查看>>
JPA用法中字段起名规范
查看>>
http status code
查看>>
input宽度超出
查看>>
java设计模式----工厂方法模式
查看>>
ubuntu下配置安装Myslq
查看>>
phpstudy打不开localhost(Apache)
查看>>