📣 概况
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
✨ 特性
- 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
- 囊括了 30+ 种常见图表,应有尽有
- 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
- 可轻松集成至 Flask,Django 等主流 Web 框架
- 高度灵活的配置项,可轻松搭配出精美的图表
- 详细的文档和示例,帮助开发者更快的上手项目
- 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
如何安装
pip 安装
$ pip(3) install pyecharts
源码安装
$ git clone https://github.com/pyecharts/pyecharts.git
$ cd pyecharts
$ pip install -r requirements.txt
$ python setup.py install
# 或者执行 python install.py
读取如图所示人生导航数据
代码思路:1.提取数据(对数据进行筛选求和)
2.将数据传入图表,生成图
涉及的内容:python基础,pandas,pyechast,类等
from pyecharts.globals import ThemeType
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar,Page,Pie
class weekly():
colors = ["#5793f3", "#d14A61", "#675bba","Pink"]
#初始化打开文件,按日期进行分组,获取每组的键(timestamp),调用相关方法
def __init__(self):
self.activity_values = pd.read_excel(r'D:\myLife\myLife(2)1.xlsx',sheet_name=1)
self.every_activity_values = self.activity_values.groupby("日期")
self.df = list(self.every_activity_values.groups.keys())
self.deal_time()
self.sum_activity()
def deal_time(self):
'''
筛选时间字符串
'''
self.list1 = []
for i in self.df:
self.list1.append(i) #75为2月21日 每一周加7
if len(self.list1) == 96:
self.list1.clear()
def sum_activity(self):
'''
获取各组的数据,按照操作进行分组求和,通过concat方法拼接dataframe多表,再对其按照操作进行分组求和,
索引为操作名称,获取索引
'''
self.ds = []
for j in self.list1:
self.dt = self.every_activity_values.get_group(j)
self.ds.append(self.dt.groupby("操作").sum())
self.p = pd.concat(self.ds)
self.ps = self.p.groupby("操作").sum()
self.ix = self.ps.index
week = weekly()
print(len(week.list1))#此处用来查看list1是不是这一周的内容
print(week.list1)
def pie1_rosetype() -> Pie:
c = (
Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT,width='1000px',height='600px')) #主题风格
.add("", [list(z) for z in zip(week.ix,week.ps["时长"])] )
.set_global_opts(title_opts=opts.TitleOpts(title="第四周活动时长占比",pos_top="top",pos_left="left"),
legend_opts=opts.LegendOpts(pos_left="right", orient="vertical")) # 设置标题
.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{d}%'))) # 显示百分比
return c
def page_simple_layout():
#7.page()运行多图
page = Page(layout=Page.SimplePageLayout)
page.add(
pie1_rosetype(),)
page.render("每周周报.html")
#放到主函数执行
#作用:当模块被直接运行时,以下代码块将被运行.当模块是被导入时(从另一个py文件调用模块时),以下代码块不被运行。
if __name__ == "__main__":
page_simple_layout()
print('完成')