python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

转自:菜鸟学Python

c1df0a321fc9925a9d0cabbae5863e73.png

蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对蝙蝠侠的昵称)的支持者。今天,笔者就用Python来画一个蝙蝠侠的logo,大概就是下图这个样子:

43878339fa715c878d529162d3001450.png

图1. 蝙蝠侠的logo

这次作图全程用matplotlib,IDE用的是Spyder,系统是Windows7

1).首先导入各种库

cb92e1cb38be87607b2436a60fa6e102.png

2).然后设置一下画图板

图片坐标系为X轴和Y轴都在0—100的范围。patches变量后面会用到。

a34ba04beb553f4a0243401bf938b5f8.png

3).接下来再画两个椭圆

第一个椭圆是黄色的,宽64,高34,放在最下面,第二个是黑色的,宽60,高30,放在第一个椭圆之上,两者的中心都是坐标为(50, 50)的点。

es1 = Ellipse([50, 50], width=64, height=34, facecolor='yellow', zorder=1)

es2 = Ellipse([50, 50], width=60, height=30, facecolor='black', zorder=2)

大概就是下面的效果。

f383dc516613776ce921acf5c59c6d02.png

图2. 两个椭圆的效果图

  • 然后画出图片左上部分的缺口,这部分用来显示蝙蝠的头部和翅膀。

  • 这里我们用了3阶贝赛尔曲线,Path的CURVE4方法就代表3阶贝塞尔曲线,CURVE3则是2阶。3阶贝赛尔曲线需要4个坐标点,我们就设置好4个坐标点;

  • 最后还要把这块图的边线宽度设为0,否则会有黑色边线出现影响效果。这个缺口图设置为黄色

  • 这样就和下面的第一个椭圆的颜色一样,就能产生缺口效果。

0e845d7c0efb43eb1ff321be7c06c854.png

#lw是边线宽度为0

大体效果如下图。

ecfeff7cff148c08110674b4302a61e6.png

图3. 第一个缺口的效果图

4).接下来再画出图片的第二个缺口

位于图片左下方,这次我们用的是2阶贝塞尔曲线,就是Path的CURVE3方法,这里需要3个坐标点。其他设置和patch1类似。大体效果如下。这里我们可以看到形成了一些不规则部分,不用担心,后面会把这些不规则的地方去掉。

b2ea726831bc44ffefc0b261c776abdb.png

图4. 第二个缺口的效果图

5).画第三个缺口

然后在左下方的第一个缺口旁边再画一个缺口,也就是本图的第三个缺口。方法和上一个缺口类似,都是2阶贝塞尔曲线,只是坐标点不同,其他都一样。

2ac9a7ba193963c4ee6619e51e813112.png

第三个缺口形成的效果如下图。

acca759e46b564321dc61daa284ed967.png

图5. 第三个缺口的效果图

至此,本图基本上完成了一半,看到这里大家基本上可以看出蝙蝠标志的大概意思了,这就是蝙蝠的左翼,如果还没明白的话,把右侧再画完,就可以看清楚了。因为蝙蝠标志是左右对称的,所以我们只要在本图的右侧再依葫芦画瓢,对称画这几个缺口就可以了。

6).对称的画出右边部分

我们的坐标系是0至100的范围,图片中心坐标是(50, 50),所以右侧缺口的所有x坐标为100减去左侧缺口的对应x坐标的结果,所有y坐标不变。下面直接放上右侧3个缺口的代码,和左侧是完全对应的,patch4是右上的缺口,patch5是右下边最右侧的缺口,patch6是右下边靠中间的缺口。

f81aed784a242f29c04d7c14a0b6ccf3.png

#右下1

path_data5 ,path_data6都是类似的,完成两翼的绘制之后,大体效果如下。

fe8aa97107a5e00533dd40857c983954.png

图6. 完成两翼后的效果图

7).画出头部的效果

这时候看起来还不太像蝙蝠,倒有点像烤乳鸽,没事再画完蝙蝠头部就OK了。蝙蝠头的代码如下,就是画出一个倒立的梯形,上底边长一些,下底边短一些,用的是Path的MOVETO方法,需要设置四个坐标点。颜色还是黄色,边线宽度还是0。

f184834bbfc9e5fd766523ac79cb01ca.png

头部效果如下图所示。

图7. 完成头部后的效果图

到这里整个蝙蝠侠logo的蝙蝠部分就画完了,但是还有一些细节部分要处理一下:

比如再加个黑色边框,然后再把不规则的部分去掉;

黑色边框仍用一个椭圆,这个椭圆命名为es3,和第一个黄色椭圆大小一样,但不填充,只设置边线宽度为4,默认为黑色;

然后再画一个椭圆es4,仍不填充,边线宽度设置为10,设为白色,这样就能把那些不规则的地方隐去;

代码如下:

es3 = Ellipse([50, 50], width=64, height=34, fill=False, lw=4, zorder=2) #不填充,同时边线宽度设置为4,默认为黑色

es4 = Ellipse([50, 50], width=68, height=38, fill=False, lw=10, edgecolor='white', zorder=2) #不填充,同时边线宽度设置为10,边线设为白色

最后的完成图效果如下。

1e1c3d80e5b1026ac3992314f8960433.png

图8. 完成效果图

至此,一个蝙蝠侠的logo完全搞定,我们再放上一个猛男配色和一个蓝色的logo,分别给蝙蝠女和罗宾,只需要把上面的黄色替换为粉色和蓝色即可。蝙蝠家族就算完成了。

87a24c747df71465b4754fc710819631.png

图9. 蝙蝠女logo

ea8882aa4da3f5a59e23e20e1e9c9755.png

图10. 罗宾logo

Python还是很有趣的,真的是无所不能!除了爬虫,数据分析,自动化测试,自动化办公,后端网站开发,人工智能机器学习,现在还能做画酷酷的画。真的很少有一门语言能如此简单而强大,学一门Python可以干好多事情,值了。

ca3b5a5d81b877e9f725b4545cf1f3c0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iis7php怎么301重定向,iis7/8设置网站301重定向的方法

准备条件:a、一台装有win2008以上版本的服务器 b、iis启用并且运行正常 c、在网站程序存放目录中单独创建个目录,目录里面留空即可(为了方便区分,目录名称可以设置为站点名称301,例如fcblog_301)1、打开Internet信息服务…

结构体内元素不确定_查漏补缺!高中三年生物最易忽略、易错的30个知识点整理不容错过...

高中生物的知识体系基本上是由大约数十个核心概念为基础构建起来的,这些概念包括细胞、细胞分裂、光合作用、呼吸作用、基因、染色体、遗传、变异、进化、生化系统等等,今天学姐来帮助你们整理一下高中三年中最容易忽略,也是最容易出错的30个…

基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统

叉车被广泛应用于工厂车间、仓库、流通中心和配送中心等,大大提高了对成件托盘货物进行装卸、堆垛和短距离运输作业的运输效率,几乎是所有车间必不可少的运输工具。但目前,简单方便的同时,安全事故(剐蹭、碰撞、碾压、撞车等)却也…

php zend 多个站错误,php – 如何显示Zend框架抛出的异常错误

APPLICATION_ENV环境变量的值是多少.ZF应用程序中的标准public / index.php执行以下操作:// Define application environmentdefined(APPLICATION_ENV)|| define(APPLICATION_ENV, (getenv(APPLICATION_ENV) ? getenv(APPLICATION_ENV) : production));这意味着如果…

vb.net中递归退到最外层_数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的…

php5 数据库框架,数据库 · FastAdmin - 基于ThinkPHP5的极速后台开发框架文档 · 看云...

这里提供的是数据库表字段规则在你创建表时使用,当按如下的规则进行字段命名、类型设置和备注时使用php think crud -t 表名生成CRUD时会自动生成对应的HTML元素和组件## 根据字段类型| 类型 | 备注 | 类型说明 || --------- | ---- | ----------------------------…

python的安装包下载_科学网—[转载]python常用的安装包下载 - 林清莹的博文

Python常用的安装包下载1.首先应该下载dlib安装包(例如:dlib-19.8.1-cp36-cp36m-win_amd64.whl)可以通过此网址进行下载对应的dlib包 https://pypi.org/simple/dlib/2.需要使用pip进行安装(之前很多博客说要安装vs2015,然后借用其编译的dlib才能实现在…

java实现条形图,JavaFX条形图

本文概述通常, 条形图可以定义为使用矩形条形表示数据的图。条的长度表示绘制在其中一根轴上的精确数值数据值。矩形条可以在图表上水平或垂直绘制。在下图中, 条形图显示了工程各个分支中的学生人数。 X轴是类别轴, 显示了不同的分支, 而Y轴是数字轴, 显示了特定分支中的学生人…

python缺失值填充均值法_pandas 使用均值填充缺失值列的小技巧分享

pd.DataFrame中通常含有许多特征,有时候需要对每个含有缺失值的列,都用均值进行填充,代码实现可以这样:for column in list(df.columns[df.isnull().sum() > 0]):mean_val df[column].mean()df[column].fillna(mean_val, inpl…

php excel 垂直居中,完美实现文字图片水平垂直居中

垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网上也流传了很多解决方案,但没发现比我现在用的方案更完美,至少在我的项目是如此。项目中要用到垂直居中而碰到兼容性问题的,一般都是以下几种…

cd短是什么意思_每日命令|pwd、cd

01 命令简介上回说到《每日命令 | ls》,今天我们来说一说pwd命令和cd命令。pwd命令——返回当前工作目录名称。cd命令——改变工作目录。什么是工作目录?举个例子:我在北京上班,那我的工作地点就是北京;后来我到上海上…

sql 查询表结构_SQL查询语句的完整结构解析

SELECT语句完整的句法模板:SELECT [DISTINCT] FROM [ JOIN ON ][WHERE ][GROUP BY [HAVING ]][ORDER BY ,...]上述句法模版中的[ ]表示该部分可选。SELECT整个语句的执行过程为:(1) 读取FORM子句中表、视图的数据。(2) 存在连接表时&…

php foreach ,PHP学习之foreach循环时加符号的说明

本文主要内容是关于PHP的foreach循环时加&符号的说明,感兴趣的朋友可以了解一下。foreach时加&符号:遍历的同时改变原数组即修改数据或者增加数据。$arr [a, b, c];foreach ($arr as $key > &$value) {$value $value . 111;}echo json_…

基于matlab实现的云模型计算隶属度,基于MATLAB实现的云模型计算隶属度

”云”或者’云滴‘是云模型的基本单元,所谓云是指在其论域上的一个分布,可以用联合概率的形式(x, u)来表示云模型用三个数据来表示其特征期望:云滴在论域空间分布的期望,一般用符号Εx表示。熵:不确定程度…

notebook python 内嵌 数据库_python数据分析:在jupyter notebook上使用pythonSQL做数据分析...

python数据分析:在jupyter notebook上使用python&SQL做数据分析发布时间:2019-01-14 21:14,浏览次数:1143, 标签:pythonjupyternotebookSQL类似于在jupyter上使用R语言,同样可以使用SQL语句:详细见gith…

php优化上百次foreach,php – 优化数千个项目的foreach

我在一组25,000个结果中运行下面的代码.我需要优化它,因为我达到了内存限制.$oldproducts Oldproduct::model()->findAll(); /*(here i have 25,000 results)*/foreach($oldproducts as $oldproduct) :$criteria new CDbCriteria;$criteria->compare(someid, $oldprodu…

二陈丸配什么吃不上火_宝妈一个人带孩子是什么感觉?前三种场景,不知道是怎么熬过来的...

导语:很多人认为一个家庭主妇很轻松,每天就带带孩子,其他什么都不需要做,远远没有那些人说的那么辛苦,无论是老公还是很多婆婆都认为是在家享福呢,经常就会甩出一句话“每天不就带个孩子吗?至于…

php怎么分割页面,将一个页面分成多个html文件(静态html分割页面)

静态html分割页面,达到类似PHP等动态页面的include引入页面效果。用html把首页分成三个文件web.png在PHP、JSP等动态页面开发中,页面里引入其它页面只需include()进来就可以实现页面的分离。如果用HTML,也是可以实现页面的分割的。两种方法&a…

zbar扫描无法近距离扫码_生意好时最怕收银出故障,这几个扫码枪的常见问题你一定要知道...

文|杭州丰收收不怕生意不够好,就怕生意好时收银出故障。这几天丰收收经常接到询问,说自己商铺所在的位置信号非常不好,很多客户等了很久没法付款,索性就不买了。看着上门的生意就这么走了,心里很不是滋味。遭遇这种经历…

matlab zigzag算法,ZIGZAG扫描的MATLAB实现

用MATLAB实现MPEG中的 ZIG-ZAG 扫描。觉得有点研究价值,实现的方法也很巧妙。下面给一个参照MPEG提供的方法:===function bzigzag(a)% 这是参照 University of California 提供的 MPEG 源代码的基础上编制的。% Copyri…