Python实战案例,mplcyberpunk模块,Python实现赛博朋克数据可视化 前言 开发工具 环境搭建

前言

利用Python实现赛博朋克数据可视化,废话不多说~

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

mplcyberpunk模块;

matplotlib模块;

numpy模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

赛博朋克2077》是一款由CD Projekt RED开发的动作角色类游戏

虚拟和现实界限模糊,人工智能和人造人傻傻分不清楚,穷人和富人极度分化,到处充斥着恐怖主义。

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

通过pip安装

# 安装
pip install mplcyberpunk

示例一

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,发现该库的两个主要功能

每个方法都用一次

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")

第默认格式

添加线条发光

线条发光+面积图

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的山脊地图

# 安装
pip install ridge_map
# 安装库的依赖
pip install scikit-image==0.14.2

需要注意,安装scikit-image时需指定0.14.2版本,否则会报错

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')

夏威夷岛的山脊地图,朋克风格满满

世界地图和欧洲地图

台湾省

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')

经纬度座标,可通过腾讯位置服务获取

山脊线图

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章