大数据可视化技术 实验六比例数据可视化
·
大数据可视化技术
实验六:比例数据可视化
一、实验名称
比例数据可视化
二、实验目的
通过该实验的实践,要求学生可以理解数据部分与整体的关系,掌握pyecharts的使用过程,能够熟练绘制常见的适合展示比例数据的图表。
三、实验原理
饼图:展示各类的比例分布
环形图:展示各类的比例分布并增加标签说明
百分比堆叠柱状图:展示多个不同类别下的相同子类的占比情况
百分比堆叠面积图:展示多个类别随时间变化的比例变化趋势
矩形树图:通过面积差异展示不同分类的比例差异,通过交互可以下钻到二级分类
四、实验步骤
1、饼图
输入以下代码:
from pyecharts import Pie
import pandas as pd
vote_result = pd.read_csv('/home/ubuntu/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)
pie.render('./1.饼图.html')
输出结果:

2、环形图
from pyecharts import Pie
import pandas as pd
vote_result = pd.read_csv('/home/ubuntu/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)
pie.render('./2.环形图.html')
输出结果:

3、堆叠柱形图
from pyecharts import Bar
import pandas as pd
pre_approval_rate = pd.read_csv('/home/ubuntu/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)
bar.render('./3.1堆叠柱形图.html')
输出结果:

4、堆叠柱形图2
输入以下代码:
from pyecharts import Bar
import pandas as pd
pre_approval_rate = pd.read_csv('/home/ubuntu/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.render('./3.2堆叠柱形图.html')
输出结果:

5、树图
import os
import json
import codecs
from pyecharts import Tree
with codecs.open(os.path.join("/home/ubuntu", "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
tree.render('./4.1树图.html')
输出结果:

6、矩形树图
import os
import json
from pyecharts import TreeMap
with open(os.path.join("/home/ubuntu", "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
treemap.render('./5.1矩形树图.html')
输出结果:

7、 面积折线图
from pyecharts import Line
import pandas as pd
year_population_age = pd.read_csv('/home/ubuntu/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)
line3.render(path='./6.面积折线图.html')
输出结果:

五、实验总结
在实验中,通过实践练习,提高学生使用pyecharts进行比例数据可视化的熟练程度,总结适合展示比例数据的图表,能够解释部分与整体的关系。
更多推荐
所有评论(0)