数据可视化50图(九) —— 成为宝可梦飞行训练家大师

前言

A change of perspective is worth 80 IQ points Alan Kay

著名计算机科学家、艾伦·凯说过,换一个角度看问题值80点智商。

本期介绍可视化数据周期变化和增加减小的周期。峰谷周期图

例14

df=df_Flying
x = np.arange(df.shape[0])
y_returns = (df.Total.diff().fillna(0)/df.Total.shift(1)).fillna(0) * 100

# Plot
plt.figure(figsize=(16,10), dpi= 80)
plt.fill_between(x[1:], y_returns[1:], 0, where=y_returns[1:] >= 0, facecolor='green', interpolate=True, alpha=0.7)
plt.fill_between(x[1:], y_returns[1:], 0, where=y_returns[1:] <= 0, facecolor='red', interpolate=True, alpha=0.7)

#Decoration
xtickvals=df['id']
plt.gca().set_xticks(x[::3])
plt.gca().set_xticklabels(xtickvals[::3], rotation=90, fontdict={'horizontalalignment': 'center', 'verticalalignment': 'center_baseline'})

# Annotate
plt.annotate('mega Y 喷火龙', xy=(91.0, 110.0), xytext=(70.0, 120),
             bbox=dict(boxstyle='square', fc='firebrick'),
             arrowprops=dict(facecolor='steelblue', shrink=0.05), fontsize=15, color='white')

图像

数据可视化50图(九) —— 成为宝可梦飞行训练家大师_第1张图片
91.png

解析

图像说明

数据选取了1-6世代所有飞行系宝可梦(PM)的个体值 。x轴表示PM的编号,y表示相邻PM的个体值增长率。

plt.fill_between()给2个函数间区域填充颜色
import numpy as np
import matplotlib.pyplot as plt
n = 1000
x = np.linspace(0, 8 * np.pi, n) #mat
y=x*0 
sin_y = np.sin(x)

plt.plot(x, sin_y, c='dodgerblue', label=r'$y=sin(x)$')
plt.plot(x, y, c='dodgerblue', label=r'$y=sin(x)$')

plt.fill_between(x, y, sin_y, where=y < sin_y,
                color='green', alpha=0.5)
plt.fill_between(x, y, sin_y, where=y > sin_y,
                color='red', alpha=0.5)
数据可视化50图(九) —— 成为宝可梦飞行训练家大师_第2张图片
92.png

y=sin(x) 与 y=0 两个函数围成的区域,where 条件成立的部分上色

df.diff() 计算前后数据差值,可以用于计算微分
#构造数据(0-100-0)
df_x=pd.DataFrame(np.concatenate((x[::-1],x),axis=0))
#增长率
df_diff_y = (df_x.diff().fillna(0)/df_x.shift(1)).fillna(0) * 100

plt.plot(df_x.index, df_x)
plt.plot(df_x.index, df_diff_y)
数据可视化50图(九) —— 成为宝可梦飞行训练家大师_第3张图片
93.png

从图像上看就是对蓝色函数求导求导,注意会有x/0 的情况 用fillna(0) 把未定义的无穷改写为0

应用

这个例子用宝可梦做数据并不是那么合适,如果用来探索魔种按时间周期增长衰减的规律更加合适。

(df.Total.diff().fillna(0)/df.Total.shift(1)).fillna(0) * 100 前值与后置的差值百分比。其实就是离散数据的微分表示方法,当这些数据间隔无限小那就是微分了。

下期预告

排行榜Ranking图 —— 最强传说宝可梦花落谁家

代码地址:见github主页ub3132003/pynotebook

数据表格地址:https://raw.githubusercontent.com/ub3132003/pynotebook/master/data/pokemon.csv

例程来自: machinelearningplus 感谢b站UP "菜菜TsaiTsai" 分享这个博客.

你可能感兴趣的:(数据可视化50图(九) —— 成为宝可梦飞行训练家大师)