数据可视化

您所在的位置:网站首页 axie配置 数据可视化

数据可视化

#数据可视化| 来源: 网络整理| 查看: 265

一、pyecharts模块

安装

pip install pyecharts==1.8.1

导入并创建一个对象

#从pyecharts.charts中导入Bar模块 from pyecharts.charts import Bar #创建一个柱状图Bar对象并赋值给变量bar bar=Bar()

补充知识:浮点数取近似值

round(x,n):对浮点数x进行近似取值,并保留n位小数的函数(n可选,默认保留到整数)。

添加x/y轴数据

①添加x轴数据--bar.add_xaxis()

#参数xaxis_data:命名参数,类型为列表,列表中的元素顺序表示柱状图x轴从左到右的刻度 bar.add_xaxis(xaxis_data=name)

②添加y轴数据--bar.add_yaxis()

#参数y_axis:命名参数,类型为列表 #参数series_name:设置图例名称参数,必选添加。图例名称用于区分柱状图,在图表中呈现不同的颜色,并且默认显示在图表上方 bar.add_yaxis(series_name="赞粉比", y_axis=ratioList) #平滑折线图,添加参数is_smooth=True line.add_yaxis(series_name=name,y_axis=likes,is_smooth=True)

保存图表--render()

使用render()函数可以将图表以HTML格式存储在代码所在的文件夹内。

#bar.render("路径") bar.render("/Users/Yoyo/Desktop/fans_likes.html")

二、全局配置项

导入

from pyecharts import options as opts

标题设置

bar.set_global_opts(title_opts=opts.TitleOpts(title="候选博主粉丝与点赞的对比"))

在TitleOpts中添加不同的参数,可以对坐标轴的样式进行相应的配置,例如:

title:设置标题文本

subtitle:副标题文本

pos_left:距离容器的左边距

pos_right:距离容器的右边距

坐标轴配置项--旋转x轴标签

# 初始化一个AxisOpts对象,设置标签旋转45度 bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":45}))

在AxisOpts中添加不同的参数,可以对坐标轴的样式进行相应的配置,例如:

axislabel_opts:设置坐标轴标签,参数类型为字典

position:设置坐标轴位置

max_:设置坐标轴最大值

三、绘制折线图

#从pyecharts.charts中导入Line from pyecharts.charts import Line #创建一个折线图Line对象,并赋值给变量line line = Line() # 近10篇笔记的点赞量数据存入列表likes中 likes = [71,429,150,2214,626,1597,773,10000,1947,2275] # 将博主姓名赋值给变量name name = "菠萝冰和夏天" # 将最近10篇笔记的名字存入列表并赋值给变量page page = ["近10篇","近9篇","近8篇","近7篇","近6篇","近5篇","近4篇","近3篇","近2篇","近1篇"] #给折线图添加x轴数据,数据内容是笔记名字:page line.add_xaxis(xaxis_data=page) #给折线图添加y轴数据,数据内容是点赞量列表:likes,图例名称为博主姓名:name line.add_yaxis(y_axis=likes,series_name=name) #绘制出这条折线图,并保存到/Users/Yoyo/中,文件名称为line.html line.render("/Users/Yoyo/line.html")

四、绘制看板组合

# 从pyecharts.charts中导入Line,Tab from pyecharts.charts import Line,Tab # 创建一个组件Tab对象,赋值给变量tab tab = Tab() #使用tab.add(图表,标签名)添加图表 tab.add(line,"点赞折线图")

五、y轴配置项--设置y轴最大值

# 用set_global_opts进行y轴配置,初始化一个AxisOpts对象,设置最大值为13000: line.set_global_opts(yaxis_opts= opts.AxisOpts(max_ = 13000))

六、初始化配置项--主题配置

line=Line(init_opts = opts.InitOpts(theme="dark"))

七、帕累托图

本质是一个柱状图和一个折线图的叠加。

帕累托图,是基于“帕累托法则”而建立的一种专业图表形式,专门用于识别最有影响的因子类别。

帕累托图是如何描述和识别最有影响的因子类别?

①柱状图部分,将各个原因,按照数量(也就是频次)从大到小排列。最左边,就是最重要的原因;最右边是最不重要的原因。

②折线图部分是各个问题的频率累计的结果。按重要性排序,如果从最重要的问题开始解决,能一共解决多大程度的影响。一般来说,80%是一个分界线。

字典排序

# 根据字典value的大小,对knowledge的元素进行降序排序,然后结果赋值给result #使用sorted()函数,传入字典使用items()函数的返回值、key、reverse这3个参数,对字典knowledge排序。 #key = lambda item:item[1],就是将每一个元组中第二个元素,作为排序依据。 result = sorted(knowledge.items(),key = lambda item:item[1],reverse=True)

sorted()函数:对传入的列表进行排序。

字典.items():将字典中的键值,转化为一个元组的形式。

key参数:需要传入一个函数,函数用于指定进行比较的依据,可以传入一个函数,或者在此定义一个匿名函数

reverse参数:reverse=True,降序排序 reverse=False,升序排序

绘制柱状图

绘制折线图

绘制叠加图

两张图表如果要进行叠加,就需要对其中一个图表使用overlap()函数,然后将另一个图表的对象作为参数传入。

# 对bar使用overlap()函数,传入line,就是在柱状图的基础上叠加折线图 bar.overlap(line)

新增y轴

对bar,需要使用extend_axis函数,拓展一条坐标轴的位置

对line,需要在add_yaxis函数中,注明yaxis_index=1,表示使用第2条y轴(轴的索引从0开始)。

# 使用extend_axis函数,参数yaxis传入坐标轴配置项opts.AxisOpts() bar.extend_axis(yaxis=opts.AxisOpts()) # 使用add_yaxis函数,设置图例名称参数series_name为"扣分占比",传入percentlist作为y轴数据,设置yaxis_index为1 line.add_yaxis( series_name="扣分占比", y_axis=percentlist, yaxis_index=1 )

设置图表层级

参数z_level从0开始,数值越大的图表,会在越上层显示。

# 使用add_yaxis函数,设置图例名称参数series_name为"扣分占比",传入percentlist作为y轴数据,设置yaxis_index为1,设置z_level为1 line.add_yaxis( series_name="扣分占比", y_axis=percentlist, yaxis_index=1, z_level=1 )

总结

# 定义知识点和平均扣分的字典 knowledge = {"圆锥曲线":7.5,"直线与圆":5.0,"立体几何":10.1,"空间向量":3.2,"数列":14.5,"解三角":1.9,"导数":28.5,"函数模型":3.3,"二项式定理":3.0,"线性规划":4.0,"平面向量":3.5,"复数":1.3,"集合":1.9} # 根据字典value的大小,对knowledge的元素进行降序排序,然后结果赋值给result result = sorted(knowledge.items(),key = lambda item:item[1],reverse=True) # 定义一个pointList和scoreList的空列表 pointList = [] scoreList = [] # for循环遍历列表result for item in result: # 其中元组中第一个元素就是x轴的数据,添加到列表pointList中 pointList.append(item[0]) # 其中元组的第二个元素就是y轴的数据,添加到列表scoreList中 scoreList.append(item[1]) # 定义一个累计频率的空列表percentlist percentlist = [] # 定义一个计算累计频率的变量accu_percent,赋值为0 accu_percent = 0 # 遍历列表scoreList中的每个元素 for score in scoreList: # 计算单个扣分分数,占所有扣分分数的比例,乘100,赋值给percent percent = score/sum(scoreList)*100 # 累计频率accu_percent,加上当前扣分分数的频率,得到当前的累计频率accu_percent accu_percent = accu_percent + percent # 使用round()函数保留两位小数,append到列表percentlist中 percentlist.append(round(accu_percent,2)) # 绘制柱状图 # 从pyecharts.charts中 导入 Bar模块 from pyecharts.charts import Bar # 创建一个柱状图Bar对象并赋值给变量bar bar = Bar() # 使用add_xaxis函数,传入pointList作为x轴数据 bar.add_xaxis(xaxis_data=pointList) # 使用add_yaxis函数,设置图例名称参数series_name为"扣分",传入scoreList作为y轴数据 bar.add_yaxis( series_name="扣分", y_axis=scoreList ) # 从pyecharts中导入options模块,简写为opts from pyecharts import options as opts # 使用全局配置项,设置x轴旋转45度,设置标题为"数学模块最薄弱的失分点" bar.set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":45}), title_opts=opts.TitleOpts(title="数学模块最薄弱的失分点") ) # 使用extend_axis函数,参数yaxis传入坐标轴配置项opts.AxisOpts() bar.extend_axis(yaxis=opts.AxisOpts()) # 绘制折线图 # 从pyecharts.charts中导入Line模块 from pyecharts.charts import Line # 创建一个折线图Line对象并赋值给变量line line = Line() # 使用add_xaxis函数,传入pointList作为x轴数据 line.add_xaxis(xaxis_data=pointList) # 使用add_yaxis函数,设置图例名称参数series_name为"扣分占比",传入percentlist作为y轴数据,设置yaxis_index为1,设置z_level为1 line.add_yaxis( series_name="扣分占比", y_axis=percentlist, yaxis_index=1, z_level=1 ) # 对bar使用overlap()函数,传入line,就是在柱状图的基础上叠加折线图 bar.overlap(line) # 绘制出图表 bar.render("/Users/Desktop/pareto_overlap.html")

注:overlap()还可以组合不同的图表形式,例如:柱状图叠加饼图

直接组合可能会使图标重合到一起,这时可以通过设置参数center来调整图位置。

#center = [0,0]表示设置饼图的中心坐标为(0,0)。 #设置坐标位置时,也可将参数设置成百分比。设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度 pie.add( series_name="", data_pair=data, radius=["40%","50%"], center =[0, 0]     #center =["75%", "30%"] )

overlap()可以组合直角坐标系的图表,如图所示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3