数据可视化50图(十) —— 3种宝可梦属性排行榜图

2019-04-11  本文已影响0人  iced_fd13

前言

A change of perspective is worth 80 IQ points Alan Kay

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

什么做排行只会用柱状图?本期教你3种不同的排行榜样式。另外最近的数据集从只有一代宝可梦,到了1-6代也就是从黄/红/绿、金银、绿宝书、珍珠钻石、黑白、xyz,也包括mega进化。

例16

# Prepare Data
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
Pokemon_file=r"..\data\pokemon_6.csv"
df_raw = pd.read_csv(Pokemon_file)

#df=df_raw[df_raw['Legendary']==True]
df = df_raw.groupby(r'Type 1').apply(lambda x: x.mean())
df.sort_values('Total', inplace=True)
df.reset_index(inplace=True)

# Draw plot
import matplotlib.patches as patches

fig, ax = plt.subplots(figsize=(16,10), facecolor='white', dpi= 80)
ax.vlines(x=df.index, ymin=0, ymax=df.Total, color='firebrick', alpha=0.7, linewidth=20)

# Annotate Text
for i, Total in enumerate(df.Total):
    ax.text(i, Total+10, round(Total, 1), horizontalalignment='center')


# Title, Label, Ticks and Ylim
ax.set_title('宝可梦各系能力平均值', fontdict={'size':22})
ax.set(ylabel='个体值平均数', ylim=(0, 730))
plt.xticks(df.index, df['Type 1'], rotation=60, horizontalalignment='right', fontsize=12)

# Add patches to color the X axis labels
p1 = patches.Rectangle((.57, -0.005), width=.33, height=.13, alpha=.1, facecolor='green', transform=fig.transFigure)
p2 = patches.Rectangle((.124, -0.005), width=.446, height=.13, alpha=.1, facecolor='red', transform=fig.transFigure)
fig.add_artist(p1)
fig.add_artist(p2)
plt.show()

图像

![102.png](https://img.haomeiwen.com/i16673634/bbd3e5dec037e72e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

解析

流程说明
  1. 导入数据,按第一属性标签分类,排序
  2. 画出柱状图
  3. 顶端数值标注
  4. y,x 轴标注,标题标注
  5. 給属性标签区域上色
图像解释

x轴 是各系宝可梦的属性名字,依次为 虫、毒、一般、妖精等等;y轴是个体值平均数。这边常见的图怎么拿得出手,往下看。

例 17

棒棒糖图

ax.vlines(x=df.index, ymin=0, ymax=df.Total, color='firebrick', alpha=0.7, linewidth=2)
ax.scatter(x=df.index, y=df.Total, s=75, color='firebrick', alpha=0.7)
102.png

例 18

赛跑图

ax.hlines(y=df.index, xmin=300, xmax=720, color='gray', alpha=0.7, linewidth=1, linestyles='dashdot')
ax.scatter(y=df.index, x=df.Total, s=75, color='firebrick', alpha=0.7)
103.png

结论

虫系最弱,龙系最强,好真实啊。飞行系能排到第三没想到,可能是因为神兽都会飞吧。

下期预告

坡度图Slope Chart —— 宝可梦mega前后能力对比

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

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

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

上一篇下一篇

猜你喜欢

热点阅读