美文网首页
数据分析50图(四) —— 热点计数图

数据分析50图(四) —— 热点计数图

作者: iced_fd13 | 来源:发表于2019-03-31 20:33 被阅读0次

数据分析50图(四) —— 热点计数图

前言

华罗庚说过

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

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

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

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

接着上期留下的问题,我们把不同的气缸数和百公里加速作为平面图的x,y轴以此观察他们的关系。但是许多车型会有相同的参数,比如有3种车型都是2.0L排量,4秒百公里时速。这时画出的点就会重合在一起,那么我们怎样才能把这个热度在图标上体现出来呢?

数据表地址https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv

例5

from matplotlib import patches
from scipy.spatial import ConvexHull
import warnings; warnings.simplefilter('ignore')
import seaborn as sns
sns.set_style("white")

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

fig, ax = plt.subplots(figsize=(16,10), dpi= 80)    
sns.stripplot(df.cty, df.hwy, jitter=1, size=8, ax=ax, linewidth=.5)

# Decorations
plt.title('Use jittered plots to avoid overlapping of points', fontsize=22)
plt.show()

解析

先看下原始数据,我们选用城市道路油耗(cty)和高速道路油耗(hwy)作为要画的平面点。复习一下怎么选取表格中的列:df[["cty",'hwy']]

cty hwy
0 18 29
1 21 29
2 20 31
3 21 30
4 16 26
5 18 26
6 18 27
7 18 26
。。。 。。。 。。。

解析下代码流程

  1. 导入数据表
  2. 设置画布尺寸等
  3. 画图
  4. 标注 图表的头和轴的名字等等信息

方法参数解释

  • stripplot() 散点图方法

    这次代码不多我们不妨先不急着运行例子。sns.stripplot() 中有一个不太明白意思的参数 jitter 可以删掉他看看会怎么样【图1】我们观察x轴为20的列 明显有些点颜色深,这就是因为重叠了。然后我们看看 jitter 参数怎么解决这个问题的【图2】就像他的意思“抖动”一样,就好像这个图是一个手脚不利索的老人画的,他总是不能精确的把点画在同一个地方。可是这并没有解决问题,我们只是很明显的知道这里有许多同样的点,并不能帮助们进一步分析数据。我们需要更加定性的分析,所以接下去再看一个例子。

图像

without_jitter.png jitter.png

例6

df_counts = df.groupby(['hwy', 'cty']).size().reset_index(name='counts')

# Draw Stripplot
fig, ax = plt.subplots(figsize=(16,10), dpi= 80)    
sns.stripplot(df_counts.cty, df_counts.hwy, size=df_counts.counts*2, ax=ax)

# Decorations
plt.title('Counts Plot - Size of circle is bigger as more points overlap', fontsize=22)
plt.show()

解析

这2个图的关联很大,所以我决定把2期放在一起,更能保持读者的思维。

解析下代码流程

  1. 把重复的参数次数提取出来
  2. 设置画布尺寸
  3. 画图
  4. 标注信息

方法参数解释

没有新参数引入,简单介绍下 df.groupby() 和数据库的 groupby 相同,他把表按关键字中值相同的分成一组。 比如:运动会上按身高分组,把同样是155cm的10个人分一组,160cm的7个人分一组等等。

df_counts = df.groupby(['hwy', 'cty']).size().reset_index(name='counts') 看下这句话不禁的感叹 python 的易用性,这句话就好像是口述说明一样:把 dfhwy、cty 分组计算出个数(每组的长度)并把这个新的列命名为 counts

图像

counts_plot.png

应用

刚才我们能看到重合的点了,但是不能定量的分析他。这里我的解决办法是引入一个新的维度来展现重复次数(热度)。

先思考一个问题平面图上可以利用的维度有那些? 你可别急着看下去,提示下我们曾经在平面上表示三维物体的坐标。

平面相交直线确定一点,所以显然的 x,y 坐标是2个,我们需要表达第三个变量时还能想到等高线图,在一个平面图像上表示高度,还有颜色也可以利用。还有什么呢?我暂时还没想到。回到正题上这里作者巧妙的用点的大小来表示同一个型号热度,图像既美观有直观。可是我们需要更加具体的分析热度大小这还是不够的。下期我们将结核直方图和着张图来更深入的分析给出更好的热点图。

下期预告

例7 带频次统计的散点图 —— 中值计算

相关文章

  • 数据分析50图(四) —— 热点计数图

    数据分析50图(四) —— 热点计数图 前言 华罗庚说过 数缺形时少直观,形少数时难入微. 这句话第一次听还是初...

  • 2018-10-24 场景分析实践

    1、分析图合并 2、分析图关联 3、页面细分 4、钻取技术 5、导入外部数据 (1)分析图合并 分析图合并原理 叠...

  • 《设计调研》知觉图、鱼骨图20171228阅读日记

    对于定性数据的分析时,可用知觉图和鱼骨图 知觉图: 例子: 鱼骨图: 对原因进行分析时使用的图。 最右侧是待分析问...

  • 关系型数据库设计要点(1)

    设计数据库的步骤 1.需求分析阶段:分析客户的业务和数据处理需求. 2.概要设计阶段:主要就是绘制数据库的E-R图...

  • 《可视化沟通》读后

    信息图的意义 创造语境来表达数据或流程,以致数据或流程能够被理解。并不是所有信息图都需要统计数据,如地铁线路图、摇...

  • 3、象形统计图

    象形统计图的目的主要是为了使统计数据更为直观、通俗易懂,常见的象形统计图有:条形图、扇形统计图、折线统计图、象形图...

  • # 数据分析50图(一) —— 散点图

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

  • 数据分析50图(一) —— 序幕

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

  • JVM运行时数据区域

    神图压阵: JVM运行态数据 程序计数器 程序计数器(Program Counter Register),是一块较...

  • 02坐标轴以科学计数法显示

    构造一份数据 最基本的柱形图 科学计数法1 科学计数法2 图片横置

网友评论

      本文标题:数据分析50图(四) —— 热点计数图

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