ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

赛博朋克这么火,如果与Python结合,能有多酷?

2021-01-09 13:34:10  阅读:258  来源: 互联网

标签:plt 朋克 赛博 Python mplcyberpunk np import font


《赛博朋克2077》,最近一款非常火的单机游戏~

游戏的背景设定在了2077年,一个科技高度发达但却混乱无序的“赛博朋克”都市当中。

在这个世界里,虽然科技高度发展,但是人类的生活水平却极度低下,或者说穷人的生活水平极度低下。

而且,除了极少部分的资本富人,剩下的全是穷人。

所以,这就是一个极端的世界,包含着非常多的元素。在视觉上,繁华的立体城市,到处是霓虹灯,人造光是所有的光源,甚至没有阳光。

对应的,在贫民窟,就是黑暗、潮湿。
在这里插入图片描述
虚拟和现实界限模糊,人工智能和人造人傻傻分不清楚,穷人和富人极度分化,到处充斥着恐怖主义。

总之就是一个绝对的反乌托邦世界,如果你感兴趣可以去深入了解一下,小F就点到为止咯!

这期主要是给大家介绍一款“赛博朋克”风格的Python库,「mplcyberpunk」

GitHub:https://github.com/dhaitz/mplcyberpunk

首先通过pip安装。

# 安装
pip install mplcyberpunk

由于作者没有编写使用文档,而且只给了一部分的示例代码…

小F研究起来,是真的难搞啊!

先来看第一个示例。

import matplotlib.pyplot as plt
import 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(线条面积图)。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:810735403

下面我们将每个方法都用一次。

import numpy as np
import mplcyberpunk
import matplotlib.pyplot as plt
 
plt.style.use("cyberpunk")
 
# 数据
x = np.arange(-7, 7, 0.1)
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()
 
# 保存图片
plt.savefig("defalut.png")

第一个是默认格式,第二个是添加线条发光,第三个是线条发光+面积图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
和作者给的示例图,差了标题和图例,小伙伴们可以自行添加~

此外还可以自定义一些其他类型的颜色。

默认colormap是cool。

import matplotlib.pyplot as plt
from matplotlib import cm
import mplcyberpunk
import numpy as np
 
# time
t = np.arange(0, 6.4, 0.1)
# frequency
f = 1
amplitudes = np.arange(-10, 11, 1)
# amplitude
A = [x * np.cos(f*t) for x in amplitudes]
 
# 设置颜色样式,cool、spring、winter、tab20、coolwarm
colormap_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、coolwarm
plt.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 fm
import matplotlib.pyplot as plt
from ridge_map import RidgeMap
import mplcyberpunk
 
# 赛博朋克样式
plt.style.use("cyberpunk")
 
# 中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] # Mac
plt.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')

得到夏威夷岛的山脊地图,朋克风格满满!
在这里插入图片描述
提供的两个图,世界地图和欧洲地图,数据获取时间太久,所以小F选择放弃~

好像是可以使用heightmaps格式的图片直接实现,感兴趣的小伙伴,可以自己试试啦!
在这里插入图片描述
在这里插入图片描述
小F就来实验一个小一点的区域,台湾省。

import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
from ridge_map import RidgeMap
import mplcyberpunk
 
# 赛博朋克样式
plt.style.use("cyberpunk")
 
# 中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] # Mac
plt.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开发交流学习(qq)群:810735403,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和高级开发教程,欢迎进阶中和想深入Python的小伙伴!

标签:plt,朋克,赛博,Python,mplcyberpunk,np,import,font
来源: https://blog.csdn.net/XIe_0928/article/details/112389562

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有