盛光晓,粗通python,精通arcpy

博客: https://blog.csdn.net/esa72ya

本文作者已加入Python中文社区专栏作者计划

椭球是宇宙中最为常见的形状之一,在生活中也是随处可见,无论是鸡蛋、鸭蛋,还是松花蛋、恐龙蛋,无一例外都是椭球,散发着可口浓郁食物芬芳的椭球。

循规蹈矩的庸常生活,总是时刻等待着彩蛋来打破平静。让人开心的是,借助python我们已经可以自制彩蛋了,因为matplotlib已经支持三维绘图了。

首先看看最终成果的一部分:

最终的部分成果

首先,作画要先架起画板,用matplotlib绘图也是同理,“架起画板”的语句如下:

import matplotlib.pyplot as pltfig=plt.figure()#projection='3d'的意思是绘制三维图形,否则绘制的就是平面图形,彩蛋就不会那么立体了ax=fig.gca(projection='3d')

然后,在椭球面上均匀地确定1000000(6个0)个点,将这些点彼此之间相连,在表面上涂色,就能看到大致的椭球形状,具体代码如下:

x=10*np.outer(np.cos(u),np.sin(v))y=10*np.outer(np.sin(u),np.sin(v))z=6*np.outer(np.ones(np.size(u)),np.cos(v))ax.plot_surface(x,y,z,cmap=plt.cm.get_cmap(value))

彩蛋样例

接着,我们可以画几根坐标轴来辅助定位,代码如下:

plt.plot([-15,0,10],[0,0,0],[0,0,0],color='indigo',linestyle='--')plt.plot([0,0,0],[-15,0,10],[0,0,0],color='indigo',linestyle='--')plt.plot([0,0,0],[0,0,0],[-10,0,6],color='indigo',linestyle='--')ax.quiver(0, 0, 6, 0, 0, 5, length=1, color='indigo',linestyle='--')ax.quiver(0, 10, 0, 0, 5, 0, length=1, color='indigo',linestyle='--')ax.quiver(10, 0, 0, 5, 0, 0, length=1, color='indigo',linestyle='--')

绘制效果大概是这样:

有坐标轴的彩蛋

在绘制彩蛋的过程中,用到了不同的配色方案,这些配色方案都是matplotlib自带的,比如"Spectral","Reds","autumn"等,如何获得这些配色方案的名称呢?只要一句话就可以,那就是:

print(matplotlib.cm.cmap_d.keys())

matplotlib一共提供了160种自带的配色方案,这也就意味着,我们可以生成160种不同颜色的彩蛋。彩蛋太多的话,一张一张翻着看原来也是会很累的,那么,有没有办法把他们都聚合成一张照片呢?

当然是可以的,而且还很简单,用python的PIL库就可以实现。

首先,读取160张彩蛋的所有色彩信息,具体代码如下:

from PIL import Imageims=[Image.open(filepath+"\\"+fn) for fn in listdir(filepath) if fn.endswith('.png')]

然后,生成一张空白的大图:

#columns的意思是一行包括几个彩蛋,如果等于5,每行就是五个彩蛋,第六个彩蛋就会出现在下一行result=Image.new(ims[0].mode,(width*rows,math.ceil(height*len(ims)/rows)))

最后,将所有的色彩都粘贴到大图里面就可以了。

for i,im in enumerate(ims):    row=math.floor(i/rows)    column=i%rows    result.paste(im,box=(column*width,row*height))

完成上述工作以后,就大功告成了,打开大图,满满的都是彩蛋,简直是心动到窒息。

最后的结果

zhi

chi

zuo

zhe

长按扫码鼓励作者

点 击 投 稿

宇宙充满了无尽的创造力。熵和进化,两者就象两支时间之矢,一头在拖拽着我们退入无穷的黑暗,一头在拉扯着我们走向永恒的光明。

— 凯文·凯利《失控》

推荐Python中文社区旗下的几个服务类公众号

热 门 推 荐
为你的Python程序加密

用Python开发计时器程序
用Pandas库实现MySQL数据库的读写

▼ 长按扫码上方二维码或点击下方阅读原文

免费成为社区注册会员,会员可以享受更多权益

硬核 | 用Python给女朋友送一颗彩蛋相关推荐

  1. 【摸鱼系列】如何用Python做一个有趣的Loading彩蛋游戏~

    嗨害大家好鸭!我是小熊猫❤ 不知道大家有没有在摸鱼的时候玩过它~ 这是谷歌流量器中很有名的彩蛋: 当你网络出现问题时,就会出现一个"小恐龙游戏". 当然你如果想要直接进行游戏,可以 ...

  2. 一段有趣的python代码_你知道 Python 这五个有趣的彩蛋吗?

    当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西.通常,这意味着社区的贡献者会为该语言添加一些有趣和特别的彩蛋以及隐藏的特性(当然前提是不会增加在生产环境中使用的风险). Python 就 ...

  3. python有趣的5个库_彩蛋有趣的五个_你知道 Python 这五个有趣的彩蛋吗?-云栖社区-阿里云...

    当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西.通常,这意味着社区的贡献者会为该语言添加一些有趣和特别的彩蛋以及隐藏的特性(当然前提是不会增加在生产环境中使用的风险). Python 就 ...

  4. python搞笑语句_Python那么有趣!Python里五个有趣的彩蛋你知道吗?

    当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西. Python 就是一个很好的例子.作为一门开源的语言,Python的社区为Python贡献了一些十分幽默的东西.现在就来细数一下 Pyt ...

  5. 硬核!Python 四种变量的代码对象和反汇编分析

    作者 | 大奎 整理 | 阳哥 来源丨Python数据之道 在Python基础的学习过程中,对变量和参数的理解有助于我们从更基础层面了解Python语言的运行.在这个过程中,还是有不少冷门和细节的地方 ...

  6. 超硬核的 Python 数据可视化教程!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:机器学习算法那些事 Python实现可视化的三个步骤: ...

  7. 超硬核的 Python 数据可视化教程

    来源:数据分析1480 本文约3000字,建议阅读6分钟 本文为你介绍Python实现可视化的三个步骤. Python实现可视化的三个步骤: 确定问题,选择图形 转换数据,应用函数 参数设置,一目了然 ...

  8. 秀动app抢票脚本_程序员硬核quot;Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

  9. 硬核的 Python 面试题!Python经典面试题总结

    Python面试题总结大全 一.50 道重要的 Python 面试题[问答题+编程题] 1. 说说你用过Python标准库中的哪些模块. 2. `init__`和`__new`方法有什么区别? 3. ...

  10. Python 进阶版硬核课程【王的机器出品】

    本次课是整套 Python 第二阶段的课.我把整套知识体系分成四个模块: Python 基础: 已直播完 (录播已上传),点击[课程介绍]和[课后复盘]看详细信息 Python 数据分析:这次的课程, ...

最新文章

  1. RedHat 7.0 Chrome浏览器 安装
  2. 「镁客早报」特朗普复活美国太空指挥部;ATT的5G网络在美国12个城市上线
  3. pyecharts第八节、雷达图
  4. php use include区别,php use和include区别总结
  5. 去除编译警告@SuppressWarnings注解用法详解(转)
  6. Google啊谷狗,你是在考验中国人的智商还是探测中国人的情商?
  7. 如何解决uchome自带编辑器无法获取uchome编辑器里面的值问题?(uchome二次开发)...
  8. vs2015 vs2017 编译zlib库
  9. 第五章 单例模式(待续)
  10. web高拍仪图片上传
  11. linux教程试卷_linux基础教程试卷及答案.doc
  12. SQL1005N 数据库别名 ECM 已存在于本地数据库目录或系统数据库目录中。
  13. 联发科mt6779(Helio P90),mt6775(Helio P70),MT6771(Helio P60),Helio P35,MT6762(Helio P22)处理器参数介绍
  14. 蓝桥杯OJ示例题目之A+B问题——掌握获取输入的基本方法(Python)
  15. Mac下GOPATH配置
  16. ETL:WJLYZQWDD
  17. React实现(Web端)网易云音乐项目(一),错过了真的可惜呀
  18. 【名企笔试】小米实习生招聘(风口的猪)
  19. nginx启动成功,但外部不能访问的问题
  20. Go 语言实战: 编写可维护 Go 语言代码建议

热门文章

  1. 科三 二十里铺(带视频)
  2. 申论公文题-评论类-1
  3. Jieba库与wordcloud库的学习汇总
  4. 国际品牌会员俱乐部VTN甄选全球好物 把握消费升级趋势 引领品牌高质量发展
  5. 路由器修改html,徒手修改大麦路由器dw33d,变luci中文界面,并开启ssh
  6. 第一视角:深度学习框架这几年
  7. layui可以动态添加div吗_js 动态添加元素(div、li、img等)及设置属性的方法
  8. 使用calibration_toolkit进行相机和三维激光雷达的联合标定(详细步骤)
  9. 单龙芯3A3000-7A1000PMON研究学习-(23)撸起袖子干-分析代码前的准备工作5
  10. 华氏温度计算机语言,python中将华氏温度转换为摄氏温度的示例