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

經緯度座標,可通過騰訊位置服務獲取

山脊線圖

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