作者:小F 来源:法纳斯特 《赛博朋克2077》,朋克最近一款非常火的火果单机游戏~ 游戏的背景设定在了2077年,一个科技高度发达但却混乱无序的结合“赛博朋克”都市当中。 在这个世界里,多酷虽然科技高度发展,赛博但是朋克人类的生活水平却极度低下,或者说穷人的火果生活水平极度低下。 而且,结合除了极少部分的多酷资本富人,剩下的赛博全是穷人。 所以,朋克这就是火果一个极端的世界,包含着非常多的结合元素。在视觉上,多酷繁华的立体城市,到处是霓虹灯,人造光是所有的光源,云服务器甚至没有阳光。 对应的,在贫民窟,就是黑暗、潮湿。 虚拟和现实界限模糊,人工智能和人造人傻傻分不清楚,穷人和富人极度分化,到处充斥着恐怖主义。 总之就是一个绝对的反乌托邦世界,如果你感兴趣可以去深入了解一下,小F就点到为止咯! 这期主要是给大家介绍一款“赛博朋克”风格的Python库,「mplcyberpunk 」 GitHub:https://github.com/dhaitz/mplcyberpunk 首先通过pip安装。 # 安装 pip install mplcyberpunk 由于作者没有编写使用文档,而且只给了一部分的示例代码... 小F研究起来,是真的难搞啊! 先来看第一个示例。 import matplotlib.pyplot as plt mplcyberpunk ) ) ) mplcyberpunk.add_glow_effects() plt.show() 得到一个线条发光的面积图。 确实很符合赛博朋克的霓虹灯风格 ,人造光源。 通过查看库的源码库源码文件core.py,发现该库的两个主要功能。 即make_lines_glow(线条发光)和add_underglow(线条面积图 )。 下面我们将每个方法都用一次。 import numpy as np mplcyberpunk plt ) ) y1 = np.sin(x) y2 = np.sin(x) + x y3 = np.sin(x) * x y4 = np.sin(x) / x plt.plot(x, y1) plt.plot(x, y2) plt.plot(x, y3) plt.plot(x, y4) mplcyberpunk.make_lines_glow() mplcyberpunk.add_underglow() 第一个是默认格式,第二个是添加线条发光,第三个是线条发光+面积图。 和作者给的示例图,差了标题和图例,小伙伴们可以自行添加~ 此外还可以自定义一些其他类型的颜色。 默认colormap是cool。 import matplotlib.pyplot as plt cm mplcyberpunk np ) ) amplitudes] , len(amplitudes)) colormap_sect] ] ) ) ): plt.plot(t, A[i], color=colors[i]) mplcyberpunk.make_lines_glow() ) 得到5种配色方案的图表。 看起来,都很炫! 最后还可以生成“赛博朋克”风格的云南idc服务商地图。 使用到的是ridge_map的山脊地图。 GitHub:https://github.com/ColCarroll/ridge_map # 安装 pip install ridge_map 这里需要注意,安装scikit-image时需指定0.14.2版本,否则会报错。 由于ridge_map这个库内容比较多,就不展开说了。 import matplotlib.font_manager as fm plt RidgeMap mplcyberpunk ) ) ), font=font_prop) ) values = rm.preprocess(values=values, , ) ) ) 得到夏威夷岛的山脊地图,朋克风格满满! 作者提供的两个图,世界地图和欧洲地图,数据获取时间太久,所以小F选择放弃~ 好像是可以使用heightmaps格式的图片直接实现,感兴趣的小伙伴,可以自己试试啦! 小F就来实验一个小一点的区域,台湾省。 import matplotlib.font_manager as fm plt RidgeMap mplcyberpunk ) ) ), font=font_prop) ) values = rm.preprocess(values=values, , ) ) ) 其中经纬度坐标,可通过腾讯位置服务获取。 得到台湾省的山脊线图。 不愧是高山民族,除了沿海平一点,其它都是山... 好了,本期分享到此就结束了,对于“赛博朋克”风格的柱状图、饼图等等,就让大家自己去探索吧。公众号后台回复“图书“,了解更多号主新书内容