《赛博朋克2077》,最近一款非常火的单机游戏~
游戏的背景设定在了2077年,一个科技高度发达但却混乱无序的“赛博朋克”都市当中。
在这个世界里,虽然科技高度发展,但是人类的生活水平却极度低下,或者说穷人的生活水平极度低下。
而且,除了极少部分的资本富人,剩下的全是穷人。
所以,这就是一个极端的世界,包含着非常多的元素。在视觉上,繁华的立体城市,到处是霓虹灯,人造光是所有的光源,甚至没有阳光。
对应的,在贫民窟,就是黑暗、潮湿。
虚拟和现实界限模糊,人工智能和人造人傻傻分不清楚,穷人和富人极度分化,到处充斥着恐怖主义。
总之就是一个绝对的反乌托邦世界,如果你感兴趣可以去深入了解一下,小F就点到为止咯!
这期主要是给大家介绍一款“赛博朋克”风格的Python库,「mplcyberpunk」
GitHub:https://github.com/dhaitz/mplcyberpunk
首先通过pip安装。
# 安装pip install mplcyberpunk
先来看第一个示例。
import matplotlib.pyplot as pltimport mplcyberpunk # 添加样式plt.style.use("cyberpunk") plt.plot([1, 3, 9, 5, 2, 1, 1], marker='o')plt.plot([4, 5, 5, 7, 9, 8, 6], marker='o') # 设置线条发光+面积图mplcyberpunk.add_glow_effects()plt.show()
得到一个线条发光的面积图。
确实很符合赛博朋克的霓虹灯风格,人造光源。
通过查看库的源码文件core.py,发现该库的两个主要功能。
即make_lines_glow(线条发光)和add_underglow(线条面积图)。
下面我们将每个方法都用一次。
import numpy as npimport mplcyberpunkimport matplotlib.pyplot as plt plt.style.use("cyberpunk") # 数据x = np.arange(-7, 7, 0.1)y1 = np.sin(x)y2 = np.sin(x) + xy3 = np.sin(x) * xy4 = np.sin(x) / xplt.plot(x, y1)plt.plot(x, y2)plt.plot(x, y3)plt.plot(x, y4) # 线条发光mplcyberpunk.make_lines_glow()# 面积图mplcyberpunk.add_underglow() # 保存图片plt.savefig("defalut.png")
第一个是默认格式,第二个是添加线条发光,第三个是线条发光+面积图。
此外还可以自定义一些其他类型的颜色。
默认colormap是cool。
如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python裙,关注小编,并私信“01”即可进裙,领取python学习资料,会节约很多时间,减少很多遇到的难题。
import matplotlib.pyplot as pltfrom matplotlib import cmimport mplcyberpunkimport numpy as np # timet = np.arange(0, 6.4, 0.1)# frequencyf = 1amplitudes = np.arange(-10, 11, 1)# amplitudeA = [x * np.cos(f*t) for x in amplitudes] # 设置颜色样式,cool、spring、winter、tab20、coolwarmcolormap_sect = np.linspace(0, 1, len(amplitudes))colors = [cm.coolwarm(x) for x in colormap_sect] plt.rcParams['figure.figsize'] = [6, 4]plt.style.use("cyberpunk")plt.xlim(right=6.3) for i in range(21): plt.plot(t, A[i], color=colors[i])mplcyberpunk.make_lines_glow() # 标题名,cool、spring、winter、tab20、coolwarmplt.title("Colormap: 'coolwarm'")plt.savefig("colormap.png")
得到5种配色方案的图表。
看起来,都很炫!
最后还可以生成“赛博朋克”风格的地图。
使用到的是ridge_map的山脊地图。
GitHub:https://github.com/ColCarroll/ridge_map
# 安装pip install ridge_map# 安装库的依赖pip install scikit-image==0.14.2
这里需要注意,安装scikit-image时需指定0.14.2版本,否则会报错。
由于ridge_map这个库内容比较多,就不展开说了。
import matplotlib.font_manager as fmimport matplotlib.pyplot as pltfrom ridge_map import RidgeMapimport mplcyberpunk # 赛博朋克样式plt.style.use("cyberpunk") # 中文显示plt.rcParams['font.sans-serif'] = ['SimHei'] # Windowsplt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] # Macplt.rcParams['axes.unicode_minus'] = False # 字体font_prop = fm.FontProperties(fname="方正兰亭刊黑.ttf") # 获取数据,此处需特殊技巧才能成功rm = RidgeMap(bbox=(-156.250305, 18.890695, 154.714966, 20.275080), font=font_prop) # 设置线条数,朝向,以及其他属性values = rm.get_elevation_data(num_lines=200, viewpoint='north')values = rm.preprocess(values=values, water_ntile=10, vertical_ratio=240) # 设置标题,线条颜色,背景颜色等rm.plot_map(values, label="夏威夷", kind='gradient', line_color=plt.get_cmap('spring'), background_color='#212946')plt.savefig('夏威夷.png')
得到夏威夷岛的山脊地图,朋克风格满满!
世界地图和欧洲地图,数据获取时间太久,所以小编选择放弃~
好像是可以使用heightmaps格式的图片直接实现,感兴趣的小伙伴,可以自己试试啦!
小F就来实验一个小一点的区域,台湾省。
import matplotlib.font_manager as fmimport matplotlib.pyplot as pltfrom ridge_map import RidgeMapimport mplcyberpunk # 赛博朋克样式plt.style.use("cyberpunk") # 中文显示plt.rcParams['font.sans-serif'] = ['SimHei'] # Windowsplt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] # Macplt.rcParams['axes.unicode_minus'] = False # 字体font_prop = fm.FontProperties(fname="方正兰亭刊黑.ttf") # 获取数据,此处需特殊技巧才能成功rm = RidgeMap(bbox=(122.014, 25.344, 120.036, 21.902), font=font_prop) # 设置线条数,朝向,以及其他属性values = rm.get_elevation_data(num_lines=200, viewpoint='north')values = rm.preprocess(values=values, water_ntile=10, vertical_ratio=240) # 设置标题,线条颜色,背景颜色等rm.plot_map(values, label="台湾省", kind='gradient', line_color=plt.get_cmap('spring'), background_color='#212946')plt.savefig('台湾省.png')
其中经纬度坐标,可通过腾讯位置服务获取。
得到台湾省的山脊线图。
不愧是高山民族,除了沿海平一点,其它都是山...
好了,本期分享到此就结束了,对于“赛博朋克”风格的柱状图、饼图等等,就让大家自己去探索吧。
最后多说一句,小编是一名python开发工程师,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以关注小编,并私信“01”领取。
文章来源:Python之眼
相关新闻
相关商品
【先咨询,再下单】Google Play礼品卡¥1500日元充值卡_谷歌¥1500日本礼品卡_谷歌商店¥1500JPY兑换码/点卡/Gift Card
¥130.00【先咨询,再下单】Google Play礼品卡₩5000韩元充值卡_谷歌₩5000韩国礼品卡_谷歌商店₩5000KRW兑换码/点卡/Gift Card
¥35.00Google Play礼品卡$5 美元代充_谷歌$5美国代充_谷歌商店$5 USD兑换码/点卡/Gift Card代充
¥38.00澳服瓦罗兰特A$10澳元充值卡_澳服Valorant瓦罗兰特/无畏契约A$10澳大利亚充值卡/兑换码/点卡/Gift Card
¥55.33Google Play礼品卡€ 30欧元充值卡_谷歌€ 30欧盟礼品卡_谷歌商店€ 30EUR兑换码/点卡/Gift Card
¥268.00【先咨询,再下单】Google Play礼品卡HK$150港币代充_谷歌HK$150香港游戏代充_谷歌商店HK$150HKD游戏代充/Gift Card
¥199.00