美文网首页
数据分析50图(五) —— 箱图中位数

数据分析50图(五) —— 箱图中位数

作者: iced_fd13 | 来源:发表于2019-04-01 11:27 被阅读0次

前言

华罗庚说过

数缺形时少直观,形少数时难入微.

这句话第一次听还是初中数学老师上二次方程课时说的.最近看到了3blue1brown对线性代数的直观解释感觉豁然开朗,于是我又捡起了儿时对美妙数学的兴趣. 发现一个博客,数据可视化很好的例子,决定花些时间和大家一起解读一下

例程来自:https://www.machinelearningplus.com/plots/matplotlib-histogram-python-examples//

感谢b站UP "菜菜TsaiTsai" 分享这个博客.

简单回顾下上期内容,我们的目标是在一张图上展示多个维度信息,例如购买口红时我们会参考他的销量、色号、价格等等参数,当我们把每个品牌的口红个个参数都体现在一张图上时这些点会有某种分布的趋势。这个趋势在总样本越多时越明显。这期我们要综合之前的散点图和直方图来展示。

例7

# Import Data
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")

# Create Fig and gridspec
fig = plt.figure(figsize=(16, 10), dpi= 80)
grid = plt.GridSpec(4, 4, hspace=0.5, wspace=0.2)

# Define the axes
ax_main = fig.add_subplot(grid[:-1, :-1])
ax_right = fig.add_subplot(grid[:-1, -1], xticklabels=[], yticklabels=[])
ax_bottom = fig.add_subplot(grid[-1, 0:-1], xticklabels=[], yticklabels=[])

# Scatterplot on main ax
ax_main.scatter('displ', 'hwy', s=df.cty*4, c=df.manufacturer.astype('category').cat.codes, alpha=.9, data=df, cmap="tab10", edgecolors='gray', linewidths=.5)

# histogram on the right
ax_bottom.hist(df.displ, 40, histtype='stepfilled', orientation='vertical', color='deeppink')
ax_bottom.invert_yaxis()

# histogram in the bottom
ax_right.hist(df.hwy, 40, histtype='stepfilled', orientation='horizontal', color='deeppink')

# Decorations
ax_main.set(title='Scatterplot with Histograms \n displ vs hwy', xlabel='displ', ylabel='hwy')
ax_main.title.set_fontsize(20)
for item in ([ax_main.xaxis.label, ax_main.yaxis.label] + ax_main.get_xticklabels() + ax_main.get_yticklabels()):
    item.set_fontsize(14)

xlabels = ax_main.get_xticks().tolist()
ax_main.set_xticklabels(xlabels)
plt.show()

解析

我们上期提过一个问题,在一个平面上如何展示超过3个特征的维度信息。当时的答案有,x,y坐标,等高线法,标记颜色。上例采用了一个更简单暴力的方法:再画一个图。

解析下代码流程

  1. 导入数据表
  2. 分割画布
  3. 设置画布尺寸,和其他2个画布尺寸
  4. 画图,需要画1幅散点图,2幅直方图
  5. 标注 图表的头和轴的名字等等信息

方法参数解释

  • plt.GridSpec(4, 4,hspace=0.5, wspace=0.2) 把画布分为 4x4 高为0.5单位,宽为0.2单位
  • ax_bottom.invert_yaxis() 把y 轴作为很水平轴

图像

s_higt..png

应用

这里我们学到一个图形分割的方法。把一个长方形分成4分,去3x3面积作为主画面,剩下的1x4和4x1 大小作为辅助的画面。你可以找一张纸画画看,这让我想起小学时做的那些数学题。来看图像这次我们有更加量化的图像,但还是不够。因为加入让你来描述这张图表,表示什么,你可能很难回答。我们需要把具体再回到概括,不过这次用一个数值来概括。看下一个例子

例8


# Create Fig and gridspec
fig = plt.figure(figsize=(16, 10), dpi= 80)
grid = plt.GridSpec(4, 4, hspace=0.5, wspace=0.2)

# Define the axes
ax_main = fig.add_subplot(grid[:-1, :-1])
ax_right = fig.add_subplot(grid[:-1, -1], xticklabels=[], yticklabels=[])
ax_bottom = fig.add_subplot(grid[-1, 0:-1], xticklabels=[], yticklabels=[])

# Scatterplot on main ax
ax_main.scatter('displ', 'hwy', s=df.cty*5, c=df.manufacturer.astype('category').cat.codes, alpha=.9, data=df, cmap="Set1", edgecolors='black', linewidths=.5)

# Add a graph in each part
sns.boxplot(df.hwy, ax=ax_right, orient="v")
sns.boxplot(df.displ, ax=ax_bottom, orient="h")

# Decorations ------------------
# Remove x axis name for the boxplot
ax_bottom.set(xlabel='')
ax_right.set(ylabel='')

# Main Title, Xlabel and YLabel
ax_main.set(title='Scatterplot with Histograms \n displ vs hwy', xlabel='displ', ylabel='hwy')

# Set font size of different components
ax_main.title.set_fontsize(20)
for item in ([ax_main.xaxis.label, ax_main.yaxis.label] + ax_main.get_xticklabels() + ax_main.get_yticklabels()):
    item.set_fontsize(14)

plt.show()

解析

这是第二次用到 seabron 包,他除了配色好看,还直接帮你计算了,中值、回归线这些东西

解析下代码流程

  1. 分割画布
  2. 设置画布大小
  3. 画图,一幅散点图,2幅箱图
  4. 添加标注

方法参数解释

sns.boxplot(df.hwy, ax=ax_right, orient="v")
  • 输入为一个一维数列。
  • ax 可以用 matplotlib 的画布作为输入画布
  • orient 设置方向

图像

s_h_box.png

应用

再箱图中的横线就是这个样本的中位数,现在我们可以描述这个图了,市场上主流排量车型时3.2L,主流的油耗在每英里25加仑。

下期预告

下期我们将做一次总结,不在介绍新的统计图。事实上对于非专业统计员而言,散点图,折线图,直方图,箱图,已经能应对生活中99.9%场景了。这次总结我们会完整且详细的把一个表格变成一幅漂亮而且有意义的图表。

下期预告:统计50图——总结与宝可梦游戏数值统计

相关文章

  • 数据分析50图(五) —— 箱图中位数

    前言 华罗庚说过 数缺形时少直观,形少数时难入微. 这句话第一次听还是初中数学老师上二次方程课时说的.最近看到了3...

  • 25统计基础- 清楚的理解箱图

    清楚的理解箱图 箱子中的线是中位值(median value),50%的数据高于中位数,50%的数据低于中位数 在...

  • N种箱线图的画法

    图中标示了箱线图中每条线和点表示的含义,其中应用到了分位数的概念线的主要包含五个数据节点,将一组数据从大到小排列,...

  • 五数概括法和箱形图

    五数概括法:五数分别为最小值,最大值,第一四分位数,第三四分位数,中位数。箱形图:箱形图作图步骤如下,(1)绘制一...

  • R011 基本图形-箱线图boxplot()

    箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分位数)、中位数(第50百分位数)...

  • Matplotlib库基础-箱型图

    箱型图又称为盒须图或盒式图,是一种用来显示数据分散情况的统计图。 箱型图分为上边缘,上四分位数,下边缘,下四分位数...

  • spss_绘制茎叶图

    下表为某电脑公司连续四个月每天的销售量数据,对其做茎叶图分析。 分析步骤 分析结果 从图中可以看出大致呈正态分布箱线图

  • ggplot2|从0开始绘制箱线图

    继续“一图胜千言”系列,箱线图通过绘制观测数据的五数总括,即最小值、下四分位数、中位数、上四分位数以及最大值,描述...

  • R语言:菌群Alpha多样性分析和Boxplot箱形图

    导读 箱型图(Boxplot)或者盒图是一种能同时展示一组或多组数据的极值、四分位数、中位数和离群值,显示数据离散...

  • 箱线图

    箱线图五要素: 最大值 四分之三分位数 中位数 (图中红线) 四分之一分位数 最小值

网友评论

      本文标题:数据分析50图(五) —— 箱图中位数

      本文链接:https://www.haomeiwen.com/subject/fhgmbqtx.html