首页 > 其他分享 >Pyecharts交互式图表引入

Pyecharts交互式图表引入

时间:2022-10-14 15:33:56浏览次数:54  
标签:tolist Pyecharts df max gap 图表 add 交互式

Pyecharts交互式图表引入_坐标轴

什么是Pyecharts?Pyecharts是百度开源数据可视化项目与Python 的有效结合,具有良好的交互性,精巧的图表设计,在创建具有交互式图表时,成为数据可视化首选工具。

本文创建一组成绩数据,使用Pyecharts创建“一页纸报告”,分别使用不同的交互式图表分析学生成绩,下面一起来学习。



示例工具:anconda3.7

本文讲解内容:pyecharts图表创建

适用范围:交互式图表创建



Pyecharts交互式图表引入_折线图_02

查看版本

    本节的案例均使用的是pyecharts1.9版本,如果没有这个包,可以在命令行输入如下的命令指定下载。


    一页纸报告获取

    公众号后台回复

    2214

    获取本节一页纸报告

    数据创建

    本节构建一组数据,数据内容是包含近几次的一名理科生的月考成绩,数据结果如下所示。


    import pandas asdf=pd.DataFrame({'语文':[91,92,79,100],'数学':[112,85,82,34],'英语':[87.5,92.5,75,56.25],'物理':[77,102,65,71],'化学':[79,72,66,68],'生物':[80,90,70,53],'总分':[670.5,443.5,531,382.25]},'2021-05-06','2021-06-09','2021-07-12','2021-10-08'])df

    Pyecharts交互式图表引入_折线图_03

    表格

    将成绩表生成一张表格,导入Table。



    from pyecharts.components importfrom pyecharts.options import

    导入表头和数据行即可。


    #表格table = Table()headers = df.columns.tolist()rows = [df.iloc[0].tolist(),df.iloc[1].tolist(),df.iloc[2].tolist(),df.iloc[3].tolist()]
    table.add(headers, rows)table.set_global_opts(title_opts=ComponentTitleOpts(title="成绩表"))table.render_notebook()

    Pyecharts交互式图表引入_数据_04

    折线图

    分析每次月考的总分趋势情况,做折线图,这里导入Line。


    from pyecharts import options asfrom pyecharts.charts import

    pyecharts支持链式调用,.add_xaxis用于添加横坐标轴数据,.add_yaxis用于添加纵坐标轴数据,.set_global_opts用于设置图表区格式,.render_notebook()将图表在线显示,.render(line.html)将图表导出为网页。


    #折线图line = (Line()        .add_xaxis(df.index.tolist())"总分", df['总分'].tolist(), is_smooth=True)#平滑曲线"总分趋势折线图"),#添加滚动条         )line.render_notebook()

    Pyecharts交互式图表引入_坐标轴_05

    柱形图

    分析每一次月考各科成绩的变化,做柱形图,这里导入Bar。



    from pyecharts import options asfrom pyecharts.charts import

    分别导入各科的成绩,导入横坐标轴数据和纵坐标轴数据,并设置图表格式,.set_series_opts用于设置数据系列格式,比如这里添加数据标注。


    #柱形图bar = (Bar()      .add_xaxis(df.index.tolist())"语文", df['语文'].tolist(),category_gap="20%",gap="10%")#单系列柱间距离"数学", df['数学'].tolist(),category_gap="20%",gap="10%")"英语", df['英语'].tolist(),category_gap="20%",gap="10%")"物理", df['物理'].tolist(),category_gap="20%",gap="10%")"化学", df['化学'].tolist(),category_gap="20%",gap="10%")"生物", df['生物'].tolist(),category_gap="20%",gap="10%")
    .set_global_opts(#X轴坐标旋转"Bar-旋转X轴标签"),#添加标题#添加滚动条#添加工具箱#数据标签标注"max", name="最大值"),"min", name="最小值"),"average", name="平均值")])) )bar.render_notebook()

    Pyecharts交互式图表引入_数据_06

    组合图

    查看每一次月考语文成绩与总分的对比关系,这里使用组合图,分别绘制柱形图和折线图,使用overlap函数进行拼接。



    from pyecharts import options asfrom pyecharts.charts import

    组合图的使用,重点是设置主坐标轴和次坐标轴,.extend_axis用于设置图表的次坐标轴,yaxis_opts用于设置图表的主坐标轴。


    v1 = df['语文'].tolist()v2 = df['总分'].tolist()#柱形图bar = (Bar()      .add_xaxis(df.index.tolist())"语文", v1 ,category_gap="60%",gap="10%") #设置柱形间隙宽度"{value} 分"), min_=0,max_=700))#设置次坐标轴坐标大小#显示数据标签"语文成绩与总分数组合图"),#添加滚动条"{value} 分"),min_=0,max_=190)))#设置主坐标轴坐标大小#折线图line = Line().add_xaxis(df.index.tolist()).add_yaxis("总分", v2, yaxis_index=1, is_smooth=True)#组合图bar.overlap(line)bar.render_notebook()

    Pyecharts交互式图表引入_折线图_07

    雷达图

    查看期中考试和第二次月考各科的成绩情况,这里使用雷达图,导入Radar。



    from pyecharts import options asfrom pyecharts.charts import

    使用雷达图需分别设置每个坐标点的最大值范围,使用.add_schema函数分别进行设置。



    #雷达图v1 = [df.loc['2021-10-08'][['语文','数学','英语','物理','化学','生物']].values.tolist()]v2 = [df.loc['2021-07-12'][['语文','数学','英语','物理','化学','生物']].values.tolist()]leida = (Radar()        .add_schema(                    schema=["语文", max_=150),"数学", max_=150),"英语", max_=150),"物理", max_=100),"化学", max_=100),"生物", max_=100),])add("期中考试", v1)add("第二次月考", v2)        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))        .set_global_opts("single"),"成绩雷达图"))          )leida.render_notebook()

    Pyecharts交互式图表引入_坐标轴_08

    图表布局

    图表生成后,通常我们要将其整理为“一页纸报告”,这里导入Page。


    #Page切换from pyecharts import options asfrom pyecharts.charts importfrom pyecharts.components importfrom pyecharts.options import

    分别做出每一个图表,然后使用page函数进行封装。


    #表格table = Table()headers = df.columns.tolist()rows = [df.iloc[0].tolist(),df.iloc[1].tolist(),df.iloc[2].tolist(),df.iloc[3].tolist()]
    table.add(headers, rows)table.set_global_opts(title_opts=ComponentTitleOpts(title="Table-基本示例", subtitle="我是副标题支持换行哦"))#折线图line = (Line() .add_xaxis(df.index.tolist())"总分", df['总分'].tolist(), is_smooth=True)"总分趋势折线图"),#添加滚动条) )#柱形图bar = (Bar() .add_xaxis(df.index.tolist())"语文", df['语文'].tolist(),category_gap="20%",gap="10%")#单系列柱间距离"数学", df['数学'].tolist(),category_gap="20%",gap="10%")"英语", df['英语'].tolist(),category_gap="20%",gap="10%")"物理", df['物理'].tolist(),category_gap="20%",gap="10%")"化学", df['化学'].tolist(),category_gap="20%",gap="10%")"生物", df['生物'].tolist(),category_gap="20%",gap="10%")
    #X轴坐标旋转"Bar-旋转X轴标签", subtitle="解决标签名字过长的问题"),#添加标题#添加滚动条#添加工具箱#数据标签标注"max", name="最大值"),"min", name="最小值"),"average", name="平均值")])) )#雷达图v1 = [df.loc['2021-10-08'][['语文','数学','英语','物理','化学','生物']].values.tolist()]v2 = [df.loc['2021-07-12'][['语文','数学','英语','物理','化学','生物']].values.tolist()]leida = (Radar() .add_schema( schema=["语文", max_=150),"数学", max_=150),"英语", max_=150),"物理", max_=100),"化学", max_=100),"生物", max_=100)])"期中考试", v1)"第二次月考", v2) .set_series_opts(label_opts=opts.LabelOpts(is_show=False))"single"),"成绩雷达图")))#页面布局page = (Page(layout=Page.DraggablePageLayout) .add(table) .add(line) .add(bar) .add(leida))#文件导出page.render(r'C:\Users\尚天强\Desktop\111.html')

    做出的一页纸报告如下,默认的图表布局右侧有很多的空白区域,且图表大小是固定的。

    Pyecharts交互式图表引入_折线图_09

    自定义图表大小

    打开.html文件,拖动图表设置图表大小,图形排列整齐后,点击save config按钮,生成一个chart_config.json的配置文件。

    Pyecharts交互式图表引入_数据_10

    运行如下的代码,可以将图形的格式固定下来,从而生成一个完美的DashBoard仪表盘。




    Page.save_resize_html(r'C:\Users\尚天强\Desktop\111.html',   # 最先生成的HTML文件路径r"C:\Users\尚天强\Desktop\chart_config.json",  # 保存本地json配置文件路径r"C:\Users\尚天强\Desktop\222.html")  # 导出图表排列后的HTML文件

    自定义图表布局后的图表如下。

    Pyecharts交互式图表引入_数据_11

    使用Pyecharts生成的一页纸报告具有交互性,交互方式如下。

    Pyecharts交互式图表引入_数据_12

    动图演示


    标签:tolist,Pyecharts,df,max,gap,图表,add,交互式
    From: https://blog.51cto.com/u_15828536/5757036

    相关文章

    • Liunx中expect之交互式命令操作详解
      导航:一、expect安装、介绍、使用场景二、expect使用原理三、expect使用语法四、expect使用举例五、expect相关错误处理---------分割线----------一......
    • transform: scale(x,y)缩放后致使echarts图表模糊
      1、将canvas转换成svg在初始化时就指定渲染器为svg:echarts.init(dom,null,{renderer:'svg'});第一个参数是:echarts的容器;第二个参数是:颜色主题......
    • ASP中利用OWC控件实现图表功能详解
      在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等。在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法。OWC的更多......
    • uniGUI学习之UniChart图表(57)
      uniGUI学习之UniChart图表(57) 效果图:双击新增数据序列:  选择图表类型:   注意数据在设置时有效......
    • python ssh 交互式命令行脚本
      importparamikoimportjsonimporttimeimportsysimportosfromparamiko.ssh_exceptionimportNoValidConnectionsErrorfromparamiko.ssh_exceptionimportAut......
    • 浅谈 使用 PHPExcel 生成带有图表的excel文件
      PHPExcel 生成excel表格目录PHPExcel 生成excel表格excel文件内表格的生成excel文件内图表的生成(我的是柱状图)输出图表excel文件内表格的生成<?php//引入配......
    • 【Vegas原创】页面(图表+table+GridView)导出为excel(07-12-5更新版)
      图表+tableprotectedvoidButton3_Click(objectsender,EventArgse){Response.Clear();Response.Buffer=true;Response.Charset="G......
    • pyecharts
      如果想要做出数据可视化效果图,可以借助pyecharts模块来完成Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而 Pyt......
    • 获取图片中的图表数据并拟合函数
      获取数据在看论文或说明手册遇到图表时,常遇到无法获取源数据或曲线的情况。以下使用WebPlotDigitizer在线工具通过像素级坐标标定并取点取数。WebPlotDigitizer在线工具......
    • 交互式视频目标跟踪
      这个视频是原始的视频。这个是分割矩阵的视频。这个是分割后的视频。   运行FLASH:分别对三个视频进行测试:  ......