数据可视化第4周
数据可视化数据关系的表示:(本为引自数据科学家联盟公众号,主要是数据可视化小组自己做的笔记,如引用请联系微信公众号:数据科学家联盟)
对进度、关系、地理信息进行可视化
一、三类数据
-
区间型数据
区间型数据一般分为两种:
👨🎤数据本身就是比例数据,一般以XX率的形式出现,用来指示某项指标的达成情况
👨🎤数据本身是数值型数据,但是根据业务需要会对数据进行区间段划分,并和一些定性指标进行对比
(1)条形进度图
通常用来表示进度情况。
通常在不同进度区间可以用不同颜色进行标注,以此来表达视觉上区分效果。
(另参考:https://ww2.mathworks.cn/help/matlab/creating_plots/types-of-bar-graphs.html 二维条形图/堆叠条形图/二维水平条形图/三维条形图/三维堆叠条形图/三维水平条形图/)
(2)仪表盘
仪表盘,由表盘刻度/指针/指针所在角度三者构成,能够直观的展示某项指标的进度。
(3)环形进度图
环形进度图,既可以表示比例型的数据以外,还可以表示数值型的数据,并将其和特定的指标相关联,可看成是仪表盘和条形进度图的结合体。(环形进度图没有指针)
-
关系型数据
数据间包含关系:韦恩图
数据间层级关系:漏斗图&矩形树图
数据之间的分流关系:桑基图
数据之间的联结关系:节点关系图
(1)韦恩图
韦恩图表示集合之间关系,展示数据集之间包含关系的绝佳方式,通过面积的大小来映射集合元素的个数,重叠部分的面积代表多个数据集重合元素的个数。
例如:购买啤酒的用户和购买尿布的用户有多少是重合的等。
(2)漏斗图
漏斗图适合作为具有层级关系的数据可视化,且具有流程性,先后关系步骤的数据,且一般是用力啊描述单变量在不同环节的变化情况。
如用户浏览后转化为客户的,或者电商网站浏览商品/加入购物车/提交订单/支付订单/交易成功。整体转化率如下图16.86%
通过纵向对比各个环节的用户转化率和流失情况,可以发现业务流程中各环节存在的问题,从而采取相应的措施来改进。(横纵向)
(3)矩形树图
树状结构层级关系数据的可视化,通过面积来映射数据大小或者数据占比,通过颜色来区分类别。当矩形数图有多级结构时,通常需要一些来辅助数据细节的展示,如鼠标悬停显示实际数或占比/单击某类别区域进入该类比细分视图或者返回上一级。
(4)桑基图
桑基图,是一种描述数据分流关系的可视化图标方案,直观展示数据流动。主要由边/流量和支点组成,其中边代表了流动的数据,流量代表了流动数据的具体数值,节点代表了不同分类。边的宽度与流量成比例地显示,边越宽,数值越大。
桑基图有一个重要的特点是保持能量守恒,所有主分支的高度总和=所有分出去的分支高度之和。它主要用于分析能源的用途流向和行业损耗/工业生产材料的成分构成,金融领域的资金流向,分析用户在网站或APP上行为路径和分流情况,比如分析家庭收入来源和支出流向,人口迁移等。
(5)节点关系图
节点关系图,常用来表示两个或多个对象之间的关系。它主要包括:节点/联系/方向:
🔽节点,表示一个对象,常用圆形/方形等形状来表示,有时还会再节点内显示对象图片等信息;
🔽联系,如果两个节点之间有联系,则使用线段链接,线段有关系说明
🔽方向,节点之间联系的方向性,使用线段的箭头来表示联系的单向或双向
常用的场景有:剧集中人物关系的可视化/个人的社交网络拓扑等。
-
地理型数据
地理可视化空间维度:二维地图和三维地图
二维地图:区域地图、道路地图、室内地图(高德、百度、腾讯)
三维地图:全景地图
(1)地图+散点图/气泡图/热力图
地图+散点图:数据的地理属性确定散点位置,数据大小则通过三点颜色体现
地图+气泡图:数据地理属性确定气泡位置,数据大小则通过气泡的面积来体现。
地图+热力图:数据的地理属性确定热力色块位置和面积,但不代表其他含义,数据大小则通过热力颜色的深浅来体现,通常会以色带来映射颜色的取值范围和大小关系
(2)地图+线图
地图+线图通常用于表示数据的流入与流出:地理信息1+地理信息2+数值
场景:人口迁移,数据流量,交通工具航线的繁忙程度和流向,包裹基础和收货量。
(3)地图+饼图
既要显示不同地理区域某一指标的数据总量,同时又要显示各地区某一指标总量的各构成部分占比,可以使用地图+饼图结合的方式来进行可视化。
二、实践
1.场景1:比较公司4个部门再2019年的年度销售额完成率
部门 | 截止当前累计销售额 | 2019年年度销售额目标(元) | 销售额完成率 |
---|---|---|---|
A部门 | 10,478,738.00 | 10,000,000.00 | 104.79% |
B部门 | 7,646,353.00 | 8,000,000.00 | 95.58% |
C部门 | 7,000,000.00 | 7,500,000.00 | 93.33% |
D部门 | 5,000,000.00 | 7,000,000.00 | 71.43% |
老总要比较这4个部门,再2019年年度销售额完成率,请问用什么图?
分析:首先这属于是进度型类数据,有目标有当前值,还有销售额完率,可以用条形图+折线图表示,条形图展示销售目标与累计销售额,折线图表示百分比。
调正次坐标y的区间范围设置为[0,1.2],因为次坐标y在[0.7,1]展示其变化趋势太大,故调整范围。
#coding=utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_excel(r'd://excel/ksjweek4_ds.xlsx',sheet_name=1)
print(df[['部门','2019年年度销售额目标(元)','截止当前累计销售额']])
df2 = df[['部门','2019年年度销售额目标(元)','截止当前累计销售额']]
df2.index=df['部门']
ax1 = df2.plot(kind='bar')
ax2 = ax1.twinx()
ax2.plot(df.index,df['销售额完成率'],'r-')
plt.ylim(0,1.2)
plt.show()
2.问题2一公司组织架构下的人员数量
一级部门 | 二级部门 | 人数 |
---|---|---|
A部门 | A1小组 | 40 |
A部门 | A2小组 | 32 |
A部门 | A3小组 | 25 |
A部门 | A4小组 | 8 |
B部门 | B1小组 | 25 |
B部门 | B2小组 | 24 |
B部门 | B3小组 | 8 |
B部门 | B4小组 | 5 |
C部门 | C1小组 | 23 |
C部门 | C2小组 | 14 |
C部门 | C3小组 | 6 |
C部门 | C4小组 | 3 |
请问,现需要在一个图表中展示公司人员构成分布,请问用什么图表展示?
分析:ABC三个部门,每个部门有若干个小组,想到可以用矩形树图展示,但是要求用一个图,如果用矩形树图,ABC三个一个图,小组相当于下钻到第二个图,这样就不是一张图(个人觉得在矩形树图中再嵌套实现矩形树图);因此需要通过另外一种形式…韦恩图…
#coding=utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import squarify
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_excel(r'd://excel/ksjweek4_ds.xlsx',sheet_name=2)
print(df)
lab = ['A1','A2','A3','B1','B2','B3']
data = [23,14,17,28,39,10]
colors= ['steelblue','#9999ff','red','indianred','deepskyblue','lime']
plot = squarify.plot(sizes=df['人数'],label=df['二级部门'],alpha=0.6,value=df['人数'],edgecolor='white',linewidth=3)
#plot = squarify.plot(sizes=data,label=lab,color=colors,alpha=1,value=data,edgecolor='white',linewidth=3)
plt.axis('off')
plt.tick_params(top='off',right='off')
plt.show()
参考:
1.https://www.jiqizhixin.com/articles/2019-01-15-11
2.https://blog.csdn.net/red_stone1/article/details/101303069 大量图
3.https://blog.csdn.net/u012111465/article/details/79018736