目录
2.百分比堆叠柱形图对于要展示数值累积的总数进行弱化,重点突出类别分布在整体中的作用,应用场景如下:
3.雷达图也常用于排名、评估、评论等数据的展示。关于雷达图的使用建议如下:
一、比例数据可视化
1.比例数据的分组依据
根据类别、子类别和群体进行划分,群体不单单指人类群体,代表着各种可能的选择和产出,也就是样本空间。
2.比例数据的应用
数据对比
二、饼图
1.定义
饼图采用了饼干的隐喻,用环状方式呈现各分量在整体中的比例。这种分块方式是环状树图等可视化表达的基础。饼图是非常常见的,常用于统计学模型。
2.饼图的基本构架
3.关于饼图的使用建议如下:
(1)饼图适合用来展示单一维度数据的占比,要求其数值中没有零或负值,并确保各分块占比总和为100%。
(2)饼图绘制时,建议尽量将饼图分块数量控制在五个以内。当数据类别较多时,我们可以把较小或不重要的数据合并成第五个模块命名为"其它"。如果各类别都必须全部展示,建议选择柱状图或堆积柱状图。
(3)饼图不适合被用于精确数据的比较,建议选用柱状图或南丁格尔玫瑰图来获取更好的展示效果。
(4)绘制饼图时,建议从12点钟开始沿顺时针右边第一个分块绘制饼图最大的数据分块,有效的强调其重要性。 其余的数据分块有两种建议,一种是按照数据大小依次顺时针排列,另一种是在12点钟的左边绘制第二大的分块,其余的分块按照逆时针排列,最小的分块放在底部。
(5)可以添加一些装饰如:颜色、动效、样式、位置等元素来强调饼图中的某一个数据。但注意适度原则。
(6)三维的饼图歪曲了各分块相对于整体的比例关系,会造成错误及理解上的困扰。对于3D饼图的使用应当慎重。
三、环形图
1.定义:
环形图,也叫面包圈图,它与饼图非常相似,只是环形图中间有一个洞,看起来像一个面包。
2.基本框架
四、百分比堆叠柱形图
1.概念
百分比堆叠柱形图属于堆叠柱形图的一种,百分比堆叠柱形图是指将每个柱子进行分割以显示相同类型下各个数据的占比大小情况。 百分比堆叠柱形图上柱子的各个层代表的是该类别数据占该分组总体数据的百分比。百分比堆叠柱形图不适用于对比不同分组内同个分类的数据大小或者对比各分组总数的大小。
2.百分比堆叠柱形图对于要展示数值累积的总数进行弱化,重点突出类别分布在整体中的作用,应用场景如下:
(1)适用场景 百分比堆叠柱形图适用于比较不同分类在某个分组所占的比重,每一个柱子上的每一层代表不同的占比,每个分组展示的数据都是100%。 (2)不适用场景 百分比堆叠柱形图不适合用于表达同一个变量下分类过多的数据,因为这样子会造成柱子上的分层太密集,不利于观察数据。
3.关于百分比堆叠柱形图的使用建议有以下几条:
(1)遵循基本的柱状图使用原则。为了使图表易于理解,请避免使用太多颜色,不要刻意展示被截断的数据误导读者。 (2)百分比堆叠柱形图不适合用于对比不同分组内同个分类之间的数据大小。 (3)百分比堆叠柱形图最好的展示效果是每个组只包含两到三个类别,最多不要超过6个,因为太多的数据系列会使数据的阅读和分辨变得非常困难。 (4)由于要分析部分数据在整体中的占比,因此要避免用百分比堆叠柱状图展示包含负数的数据。 (5)大多数的百分比堆叠柱状图都是垂直绘制的,但是如果你的数据标签特别长时,考虑更好地展示效果,可以选择使用水平堆叠的方式。
五、百分比堆叠面积图
1.概念
堆积面积图是一种特殊的面积图,可以用来比较在一个区间内的多个变量。 百分比堆积面积图是指使用百分比堆积显示不同部分之间的关系如何随时间而变化的图表。其中累积的总数不重要,重要的是显示出类别分布在整体中的作用。
2.百分比堆叠面积图的使用建议如下:
(1)图表有重叠的数据时,类别数量越多,重叠越多,因此可见度越低。如果使用面积图时会因为系列的重叠而无法阅读,可换成使用(百分比)堆叠面积图展示,则相对更容易阅读。 (2)虽然多数据系列时堆叠面积图比面积图有更好的展示效果,但依然不建议百分比堆叠面积图中包含过多数据系列,最好不要多于7个,以免数据难以辨识。 (3)百分比堆积面积图要展示部分和整体之间的关系,所以不能用于包含负值的数据的展示。 (4)建议百分比堆叠面积图中把变化量较大的数据放在上方,变化量较小的数据放在下方会获得更加的展示效果。
六、矩形树图
1.概念:
矩形树图是一种基于面积的可视化方式,通过每一个板块(通常为矩形)的尺寸大小进行度量。外部矩形代表父类别,而内部矩形代表子类别。我们也可以通过板块层级图简单的呈现比例关系,不过它更擅于呈现树状结构的数据。
七、 雷达图
1.概念
雷达图(Radar Chart)又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量。雷达图是以在同一点开始的轴上显示的三个或更多个变量的二维图表的形式来显示多元数据的方法,其中轴的相对位置和角度通常是无意义的。 雷达图的每个变量都有一个从中心向外发射的轴线,所有的轴之间的夹角相等,同时每个轴有相同的刻度,将轴到轴的刻度用网格线链接作为辅助元素,连接每个变量在其各自轴线的数据点成一个多边形。
2.雷达图的基本框架
3.雷达图也常用于排名、评估、评论等数据的展示。关于雷达图的使用建议如下:
(1)一个雷达图包含的多边形数量是有限的,如果有五个以上要评估的事物,无论是轮廓还是填充区域,都会产生覆盖和混乱,使得数据难以阅读。 (2)变量太多会产生太多的轴,也会使图表变得混乱,因此,要保持雷达图的简单并限制其变量数量。 (3)由于径向距离很难判断,所以虽然有网格线的参考,但是还是很难直观的比较图表内变量具体的值,如果需要比较具体值的话,建议使用其他比例图表。
八、比例数据可视化应用
1. 饼图
from pyecharts import Pie
import pandas as pd
vote_result = pd.read_csv('vote_result.csv')
pie = Pie("数据可视化-用户感兴趣领域",
"以下是读者的投票结果。\n"
"读者对金融、医疗保健、市场业3个领域最感兴趣。",title_pos='left')
#pie = Pie("饼图示例")
pie.add("", vote_result['Areas_of_interest'], vote_result['Votes'], center=[60, 60],legend_orient="vertical",
legend_pos="right",is_label_show=True)
#pie.add("", vote_result['Areas_of_interest'], vote_result['Votes'],is_legend_show=False,is_label_show=True)
#pie.add("", vote_result['Areas_of_interest'], vote_result['Votes'], is_label_show=False)
2. 环形图
from pyecharts import Pie
import pandas as pdvote_result = pd.read_csv('vote_result.csv')
pie = Pie("数据可视化-用户感兴趣领域",
"以下是读者的投票结果。\n"
"读者对金融、医疗保健、市场业3个领域最感兴趣。",title_pos='left')
pie.add("", vote_result['Areas_of_interest'], vote_result['Votes'], center=[60, 60],legend_orient="vertical",
radius=[30, 75],legend_pos="right",is_label_show=True)
3. 堆叠柱形图
from pyecharts import Bar
import pandas as pd
pre_approval_rate = pd.read_csv('presidential_approval_rate.csv')
bar = Bar("柱状图数据堆叠示例")
bar.add("支持", pre_approval_rate['political_issue'], pre_approval_rate['support'], is_stack=True)
bar.add("反对", pre_approval_rate['political_issue'], pre_approval_rate['oppose'], is_stack=True)
bar.add("不发表意见", pre_approval_rate['political_issue'], pre_approval_rate['no_opinion'],xaxis_rotate=30, is_stack=True)
4. 堆叠柱形图2
from pyecharts import Bar
import pandas as pd
pre_approval_rate = pd.read_csv('presidential_approval_rate.csv')
bar = Bar("柱状图数据堆叠示例",title_pos='center')
list_support = ['支持','反对','不发表意见']
for i in range(pre_approval_rate.iloc[:,0].size):
issue = pre_approval_rate.loc[i,'political_issue']
bar.add(issue, list_support, pre_approval_rate.loc[i,['support','oppose','no_opinion']], legend_orient="vertical",legend_pos="right",is_stack=True)
bar
5. 树图
import os
import json
import codecs
from pyecharts import Tree
with codecs.open(os.path.join( "GDP_data.json"), "r", encoding="utf-8") as f:
j = json.load(f)
data = [j]
tree = Tree(width=1200, height=800)
tree.add("", data) #, tree_collapse_interval=2
6. 矩形树图
import os
import json
from pyecharts import TreeMap
with open(os.path.join( "GDP_data_1.json"), "r", encoding="utf-8") as f:
data = json.load(f)
treemap = TreeMap("矩形树图示例", width=1200, height=600)
treemap.add("演示数据", data, is_label_show=True, label_pos='inside') #,treemap_left_depth=1
7. 面积折线图
from pyecharts import Line
import pandas as pd
year_population_age = pd.read_csv('us_population_by_age.csv')
# 面积折线图
line3 =Line("人口老龄化",width=500, height=500)
line3.add("5岁以下",
year_population_age['year'],
year_population_age['year_under5'],
is_fill=True,
area_color='red',
#line_opacity=0.2,
area_opacity=0.5,
#symbol=None,
mark_point=['max'],
is_stack=True)
line3.add("5至19岁",
year_population_age['year'],
year_population_age['year5_19'],
is_fill=True,
#area_color='#a3aed5',
area_color='blue',
area_opacity=0.5,
is_smooth=True,
is_stack = True)
line3.add("20至44岁",
year_population_age['year'],
year_population_age['year20_44'],
is_fill=True,
#area_color='#a3aed5',
area_color='green',
area_opacity=0.5,
is_smooth=True,
is_stack = True)
line3.add("45至64岁",
year_population_age['year'],
year_population_age['year45_64'],
is_fill=True,
#area_color='#a3aed5',
area_color='yellow',
area_opacity=0.5,
is_smooth=True,
is_stack = True)
line3.add("65岁以上",
year_population_age['year'],
year_population_age['year65above'],
is_fill=True,
#area_color='#a3aed5',
area_color='orange',
area_opacity=0.5,
is_smooth=True,
xaxis_rotate = 30,
legend_orient="vertical",
legend_pos="right",
is_stack = True)