Echarts+Python让你的数据可视化(文末有完整源码)

您所在的位置:网站首页 py图表库 Echarts+Python让你的数据可视化(文末有完整源码)

Echarts+Python让你的数据可视化(文末有完整源码)

2023-08-29 16:44| 来源: 网络整理| 查看: 265

用一个小例子+一个小程序带你了解pyecharts的基础用法 什么是Echarts?Echarts介绍代码演示支持自定义主题 使用Echarts安装pyecharts库使用pyecharts制作柱形图 Echarts+Python制作一个统计票数的程序要用到的第三方库主程序模块添加投票信息模块删除单个投票信息模块清空所有投票信息模块显示所有投票信息的模块重点来了!!!生成饼状图的模块生成条形图的模块生成CSV文件的模块退出程序模块完整源码 Finally

什么是Echarts? Echarts介绍

ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。

Echarts官网链接点这里

一个JS的插件可以运行在PC端和各类移动设备端兼容目前主流的浏览器提供多种样式的图表,其中包含动态和静态的图表

在这里插入图片描述

代码演示

大家可以登陆这个链接点击查看更多的代码演示 在这里插入图片描述 在这里插入图片描述

支持自定义主题

你可以diy任何你喜欢的配色,配置,坐标轴,等各种方案

在这里插入图片描述

使用Echarts

本文介绍的是通过Python引用第三方库【pyecharts】,通过代码并且插入数据后,自动生成数据可视化的html文件。

这里是用了一个统计投票数的一个小例子介绍Echarts库。

安装pyecharts库

老规矩,我们直接Win+R打开cmd窗口,在cmd直接输入pip install pyecharts便可直接安装成功!

使用pyecharts制作柱形图

这里给大家演示的是一个最基础的柱形图,并不代表Echarts只能做这么简单的图表,大家可以在官网看到很多高大上的图表以及其源码展示。

点这里点这里点这里!!!官网的演示链接在这里

from pyecharts.charts import Bar from pyecharts import options as opts bar = Bar() bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]) bar.add_yaxis("销量", [114, 55, 27, 101, 125, 27, 105]) bar.add_yaxis("价格", [14, 5, 7, 11, 25, 27, 10]) bar.add_yaxis("库存",[27,155,33,42,42,44,99]) #bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49]) bar.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况")) #bar.render() bar.render("生成图表.html")

代码运行后,会在同目录下生成一个html的文件,这个文件通过浏览器打开后就是我们的图表了。

在这里插入图片描述

这里有以下几点是要介绍的: 1.【add_xaxis】是更改横坐标所储存的商品名 2.【add_yaxis】是更改纵坐标的数据的,每个物品可以储存多个纵坐标的数据。 3.不论是横坐标的数据还是纵坐标的数据都是以列表的形式所存在的。 4.【title】是我们的图表的表名。 5.【render()函数】是更改我们生成的html的文件名。

Echarts+Python制作一个统计票数的程序 要用到的第三方库 import csv import pyecharts.options as opts from pyecharts.charts import Pie from pyecharts.charts import Bar import datetime

第三方库介绍: 1.这里我们第一个用到的是CSV,因为我们后期可以将数据存储为CSV的格式。【要是用不上也可以不引用】 2.第三和第四个我们用到的是pyecharts中的Pie和Bar,分别为我们制作条形图和饼状图的时候使用。 3.datetime库我主要拿它来输出当前的时间,如果你不需要依然可以不引用。

主程序模块 #主程序模块 while True: print('投票统计系统功能列表 ',datetime.datetime.today()) print('------------------------------------------------') print('------1.添加投票人信息 -') print('------2.删除投票人信息 -') print('------3.删除所有人信息 -') print('------4.显示投票人信息 -') print('------5.生成投票统计饼状图 -') print('------6.生成投票统计条形图 -') print('------7.生成投票统计CSV -') print('------8.退出程序 -') print('------------------------------------------------') print() Main_Choice=input('请输入你的选择:') if Main_Choice=='1': Count_Set.Count_Add() if Main_Choice=='2': Count_Set.Count_Del() if Main_Choice=='3': Count_Set.Count_Clear() if Main_Choice=='4': Count_Set.Count_Show() if Main_Choice=='5': Count_Set.Count_HTML_One() if Main_Choice=='6': Count_Set.Count_HTML_Two() if Main_Choice=='7': Count_Set.Count_CSV() if Main_Choice=='8': Count_Set.Count_Exit()

这里是我们的主程序模块,通过用户输入的不同数字进行不同模块的调用。

添加投票信息模块 NameList=[] #创建储存姓名列表 CountList=[] #创建储存票数列表 class Count_Set: #添加投票信息模块 def Count_Add(**kwargs): while True: NameList.append(input("请输入姓名:")) CountList.append(input("请输入票数:")) print('添加成功!!!') print(datetime.datetime.today()) print() Choice=input("请输入您的选择是否继续输入? Y Or N?") if Choice=="N": break if Choice=="Y": continue

我们这里是用了两个列表分别储存姓名信息和票数信息,以便于一会我们将数据添加到生成图表的模块。

删除单个投票信息模块 #删除投票信息模块 def Count_Del(**kwargs): print('-------------投票人信息名单-------------') for name,count in zip(NameList,CountList): print('姓名:',name,':',count) print('-------------------------------------') print(datetime.datetime.today()) print() print('请输入你需要删除的姓名') Del_Name=input('请输入:') for index,name in enumerate(NameList): if Del_Name == name: print('第',index,'号 ',name," 存在,是否继续删除 ?") Del_Choice=input('请输入Y or N ?') if Del_Choice=='Y': NameList.pop(index) CountList.pop(index) print('删除:',name,'成功!!!') print(datetime.datetime.today()) print() Del_Continue_Choice=input('是否需要继续删除? 请输入Y or N ?') if Del_Continue_Choice=='Y': continue else: break else: print('----------------输入错误,返回----------------') print(datetime.datetime.today()) print() break

这里主要是我们程序中删除单个投票信息的模块。

清空所有投票信息模块 #删除全部投票信息模块 def Count_Clear(**kwargs): print('-------------投票人信息名单-------------') for name, count in zip(NameList, CountList): print('姓名:', name, ':', count) print('-------------------------------------') print(datetime.datetime.today()) print() Clear_Choice=input('是否需要清除所有投票信息? 请输入Y Or N ???') if Clear_Choice == 'Y': NameList.clear() CountList.clear() print() print('所有投票信息清除成功!!!') print() print('-------------投票人信息名单-------------') for name, count in zip(NameList, CountList): print('姓名:', name, ':', count) print('-------------------------------------') print(datetime.datetime.today()) print() else: print('-------------输入错误,返回主菜单-------------')

这里是我们删除所有投票信息的模块。

显示所有投票信息的模块 #显示所有投票信息模块 def Count_Show(**kwargs): print('-------------投票人信息名单-------------') for name, count in zip(NameList, CountList): print('姓名:', name, ':', count) print('-------------------------------------') print(datetime.datetime.today()) print()

这里是我们显示所有的投票信息的模块。 主要是用了zip()函数对两个列表进行同时遍历和输出。

重点来了!!!生成饼状图的模块 #生成投票信息统计饼状图模块 def Count_HTML_One(**kwargs): x_data = NameList y_data = CountList data_pair = [list(z) for z in zip(x_data, y_data)] data_pair.sort(key=lambda x: x[1]) ( Pie(init_opts=opts.InitOpts(width="1600px", height="800px", bg_color="#2c343c")) .add( series_name="", data_pair=data_pair, rosetype="radius", radius="55%", center=["50%", "50%"], label_opts=opts.LabelOpts(is_show=False, position="center"), ) .set_global_opts( title_opts=opts.TitleOpts( title="投票信息统计图表", pos_left="center", pos_top="20", title_textstyle_opts=opts.TextStyleOpts(color="#fff"), ), legend_opts=opts.LegendOpts(is_show=False), ) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger="item", formatter="{a} {b}: {c} ({d}%)" ), label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"), ) .render("投票信息统计饼状图.html") ) print('生成投票信息统计饼状图文件成功---》》投票信息统计饼状图.html') print(datetime.datetime.today()) print()

在这里插入图片描述

将NameList和CountList在【data_pair】里面使用zip()函数进行同时遍历【data_pair.sort】可对数据进行排列【title】是图表的表名【render()函数】是生成的html 的文件名 生成条形图的模块 # 生成投票信息统计条形图模块 def Count_HTML_Two(**kwargs): bar = Bar() bar.add_xaxis(NameList) bar.add_yaxis('票数',CountList) bar.set_global_opts(title_opts=opts.TitleOpts(title="投票信息统计")) # bar.render() bar.render("投票信息统计条形图.html") print('生成投票信息统计条形图文件成功---》》投票信息统计条形图.html') print(datetime.datetime.today()) print()

在这里插入图片描述

生成CSV文件的模块 #生成CSV文件模块 def Count_CSV(**kwargs): with open('投票统计名单CSV.csv', 'w')as cf: write = csv.writer(cf) for list11, list22 in zip(NameList, CountList): write.writerow(list11.strip('\n').split(',')) write.writerow(list22.strip('\n').split(',')) write.writerow('------------------------数据换行------------------------') print() print('生成CSV文件成功---》》投票统计名单CSV.csv') print('---PS:若CSV文件乱码,需要以GBK编码打开---') print(datetime.datetime.today()) print() 退出程序模块 #退出程序模块 def Count_Exit(**kwargs): print("投票统计系统即将退出,请选择Y Or N ?") Exit_Choice=input('请输入: ') if Exit_Choice=='Y': print('感谢您的使用,投票统计系统即将退出') print(datetime.datetime.today()) exit(0) else: print('请输入正确的信息哦~~~') print(datetime.datetime.today()) 完整源码 # -*- coding:utf-8 -*- import csv import pyecharts.options as opts from pyecharts.charts import Pie from pyecharts.charts import Bar import datetime NameList=[] #创建储存姓名列表 CountList=[] #创建储存票数列表 class Count_Set: #添加投票信息模块 def Count_Add(**kwargs): while True: NameList.append(input("请输入姓名:")) CountList.append(input("请输入票数:")) print('添加成功!!!') print(datetime.datetime.today()) print() Choice=input("请输入您的选择是否继续输入? Y Or N?") if Choice=="N": break if Choice=="Y": continue #删除投票信息模块 def Count_Del(**kwargs): print('-------------投票人信息名单-------------') for name,count in zip(NameList,CountList): print('姓名:',name,':',count) print('-------------------------------------') print(datetime.datetime.today()) print() print('请输入你需要删除的姓名') Del_Name=input('请输入:') for index,name in enumerate(NameList): if Del_Name == name: print('第',index,'号 ',name," 存在,是否继续删除 ?") Del_Choice=input('请输入Y or N ?') if Del_Choice=='Y': NameList.pop(index) CountList.pop(index) print('删除:',name,'成功!!!') print(datetime.datetime.today()) print() Del_Continue_Choice=input('是否需要继续删除? 请输入Y or N ?') if Del_Continue_Choice=='Y': continue else: break else: print('----------------输入错误,返回----------------') print(datetime.datetime.today()) print() break #删除全部投票信息模块 def Count_Clear(**kwargs): print('-------------投票人信息名单-------------') for name, count in zip(NameList, CountList): print('姓名:', name, ':', count) print('-------------------------------------') print(datetime.datetime.today()) print() Clear_Choice=input('是否需要清除所有投票信息? 请输入Y Or N ???') if Clear_Choice == 'Y': NameList.clear() CountList.clear() print() print('所有投票信息清除成功!!!') print() print('-------------投票人信息名单-------------') for name, count in zip(NameList, CountList): print('姓名:', name, ':', count) print('-------------------------------------') print(datetime.datetime.today()) print() else: print('-------------输入错误,返回主菜单-------------') #显示所有投票信息模块 def Count_Show(**kwargs): print('-------------投票人信息名单-------------') for name, count in zip(NameList, CountList): print('姓名:', name, ':', count) print('-------------------------------------') print(datetime.datetime.today()) print() #生成投票信息统计饼状图模块 def Count_HTML_One(**kwargs): x_data = NameList y_data = CountList data_pair = [list(z) for z in zip(x_data, y_data)] data_pair.sort(key=lambda x: x[1]) ( Pie(init_opts=opts.InitOpts(width="1600px", height="800px", bg_color="#2c343c")) .add( series_name="", data_pair=data_pair, rosetype="radius", radius="55%", center=["50%", "50%"], label_opts=opts.LabelOpts(is_show=False, position="center"), ) .set_global_opts( title_opts=opts.TitleOpts( title="投票信息统计图表", pos_left="center", pos_top="20", title_textstyle_opts=opts.TextStyleOpts(color="#fff"), ), legend_opts=opts.LegendOpts(is_show=False), ) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger="item", formatter="{a} {b}: {c} ({d}%)" ), label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"), ) .render("投票信息统计饼状图.html") ) print('生成投票信息统计饼状图文件成功---》》投票信息统计饼状图.html') print(datetime.datetime.today()) print() # 生成投票信息统计条形图模块 def Count_HTML_Two(**kwargs): bar = Bar() bar.add_xaxis(NameList) bar.add_yaxis('票数',CountList) bar.set_global_opts(title_opts=opts.TitleOpts(title="投票信息统计")) # bar.render() bar.render("投票信息统计条形图.html") print('生成投票信息统计条形图文件成功---》》投票信息统计条形图.html') print(datetime.datetime.today()) print() #生成CSV文件模块 def Count_CSV(**kwargs): with open('投票统计名单CSV.csv', 'w')as cf: write = csv.writer(cf) for list11, list22 in zip(NameList, CountList): write.writerow(list11.strip('\n').split(',')) write.writerow(list22.strip('\n').split(',')) write.writerow('------------------------数据换行------------------------') print() print('生成CSV文件成功---》》投票统计名单CSV.csv') print('---PS:若CSV文件乱码,需要以GBK编码打开---') print(datetime.datetime.today()) print() #退出程序模块 def Count_Exit(**kwargs): print("投票统计系统即将退出,请选择Y Or N ?") Exit_Choice=input('请输入: ') if Exit_Choice=='Y': print('感谢您的使用,投票统计系统即将退出') print(datetime.datetime.today()) exit(0) else: print('请输入正确的信息哦~~~') print(datetime.datetime.today()) #主程序模块 while True: print('投票统计系统功能列表 ',datetime.datetime.today()) print('------------------------------------------------') print('------1.添加投票人信息 -') print('------2.删除投票人信息 -') print('------3.删除所有人信息 -') print('------4.显示投票人信息 -') print('------5.生成投票统计饼状图 -') print('------6.生成投票统计条形图 -') print('------7.生成投票统计CSV -') print('------8.退出程序 -') print('------------------------------------------------') print() Main_Choice=input('请输入你的选择:') if Main_Choice=='1': Count_Set.Count_Add() if Main_Choice=='2': Count_Set.Count_Del() if Main_Choice=='3': Count_Set.Count_Clear() if Main_Choice=='4': Count_Set.Count_Show() if Main_Choice=='5': Count_Set.Count_HTML_One() if Main_Choice=='6': Count_Set.Count_HTML_Two() if Main_Choice=='7': Count_Set.Count_CSV() if Main_Choice=='8': Count_Set.Count_Exit() Finally

有疑问或者不同意见的欢迎提出,可以留言也可以私信。 本人也在一边学习一边成长,有什么做的不好的,烦请多多指教! 谢谢!



【本文地址】


今日新闻


推荐新闻


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