分布图有超过15个例子,主要研究了总用800值精灵,18种主属性的数量,和对应的能力值分布。头条不能插入表格,数据表见文后链接。
例20 连续分布直方图# Prepare data df=df_raw[df_raw["Generation"]<4] x_var = 'Total' groupby_var = 'Type 1' df_agg = df.loc[:, [x_var, groupby_var]].groupby(groupby_var) vals = [df[x_var].values.tolist() for i, df in df_agg] # Draw plt.figure(figsize=(20,9), dpi= 80) colors = [plt.cm.Spectral(i/float(len(vals)-1)) for i in range(len(vals))] n, bins, patches = plt.hist(vals, 30, stacked=True, density=False, color=colors[:len(vals)])
图像解释
- 例如最右边780个体值这一列一共五个宝可梦,分别为龙,草2,超能力,水。
- 不同颜色对应不同属性;
- Y轴 一种颜色的高度表示这个属性的宝可梦数量。
- X轴 一个条的宽度表示这个区间的能力值。
代码解析
“# Prepare data”
选取前三代386只宝可梦作为总样本,计算各个属性的个数
“ # Draw”
- plt.figure 设置画布的大小,不合适的大小会造成图片比例不合适很难看。
- figsize=(20,9), dpi= 80 表示 20x9 每个像素高度为80 也就相当于1600x720的分辨率
- plt.cm.Spectral matlib中的颜色映射 matplotlib 包种有很多配好的颜色组合 表示(B,G,R,A)4各通道的数列;其中BGRA都是0-1之间的小数。
- plt.hist() 直方图。
- 本文省略了标注的代码,需要代码可以上我的github看看。
# Prepare data df=df_raw[df_raw["Generation"]==1] x_var = 'Stage' groupby_var = 'Type 1' df_agg = df.loc[:, [x_var, groupby_var]].groupby(groupby_var) vals = [df[x_var].values.tolist() for i, df in df_agg] # Draw plt.figure(figsize=(7,10), dpi= 80) colors = [plt.cm.Spectral(i/float(len(vals)-1)) for i in range(len(vals))] n, bins, patches = plt.hist(vals, df[x_var].unique().__len__(), stacked=True, density=False, color=colors[:len(vals)])
图像解释
X轴 表示 1,2,3,Mega阶段的进化,Y轴 表示数量。不颜色表示不同的主属性。本图数据为第一代151只宝可梦。
例 22 进化阶段能力值分布密度图# Draw Plot plt.figure(figsize=(16,10), dpi= 80) sns.kdeplot(df.loc[cyl == 1, cty], shade=True, color="g", label="Stage=1", alpha=.7) sns.kdeplot(df.loc[cyl == 2, cty], shade=True, color="deeppink", label="Stage=2", alpha=.7) sns.kdeplot(df.loc[cyl == 3, cty], shade=True, color="dodgerblue", label="Stage=3", alpha=.7) sns.kdeplot(df.loc[cyl == 4, cty], shade=True, color="orange", label="Stage=Mega", alpha=.7)