文章目录



pyecharts学习

a.简介

​Echarts​​ 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,​​pyecharts​​ 诞生了。

b.特性

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

pyecharts 所有方法均支持链式调用。

from pyecharts.charts import Bar

if __name__ == '__main__':
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
bar.render("./chartHtml/bar1.html")



from pyecharts.charts import Bar

bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
bar.render()

使用 options 配置项,在 pyecharts 中,一切皆 Options。

from pyecharts.charts import Bar
from pyecharts import options as opts

# V1 版本开始支持链式调用
# 你所看到的格式其实是 `black` 格式化以后的效果
# 可以执行 `pip install black` 下载使用
bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
# 或者直接使用字典参数
# .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
)
bar.render()

# 不习惯链式调用的开发者依旧可以单独调用方法
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
bar.render()

pyecharts学习_自定义

渲染成图片文件,这部分内容请参考 进阶话题-渲染图片

from pyecharts.charts import Bar
from pyecharts.render import make_snapshot

# 使用 snapshot-selenium 渲染图片
from snapshot_selenium import snapshot

bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
make_snapshot(snapshot, bar.render(), "bar.png")

使用主题

pyecharts 提供了 10+ 种内置主题,开发者也可以定制自己喜欢的主题,进阶话题-定制主题 有相关介绍。

from pyecharts.charts import Bar
from pyecharts import options as opts
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType

bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)

​使用 Notebook​

当然你也可以采用更加酷炫的方式,使用 Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的。pyecharts 支持 Jupyter Notebook / Jupyter Lab / Nteract / Zeppelin 四种环境的渲染。具体内容请参考 ​​进阶话题/Notebook​

2.配置项

a.全局配置项

pyecharts学习_自定义_02

3.基本使用

​Base​​ 类是所有图表的基类,包括组合图表,​​Base​​ 类 API 如下

图标实例

https://github.com/pyecharts/pyecharts-gallery

4.图表类型

pyecharts学习_自定义_03

pyecharts学习_echarts_04

5.学习实例

a.柱形图模板

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.add_yaxis("商家C", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
.render("bar_base.html")
)

pyecharts学习_html_05

pyecharts.faker 提供了一些假数据,便于演示。

Faker.choose() 随机返回下面 一个​​list​

    clothes = ["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]
drinks = ["可乐", "雪碧", "橙汁", "绿茶", "奶茶", "百威", "青岛"]
phones = ["小米", "三星", "华为", "苹果", "魅族", "VIVO", "OPPO"]
fruits = ["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]
animal = ["河马", "蟒蛇", "老虎", "大象", "兔子", "熊猫", "狮子"]
cars = ["宝马", "法拉利", "奔驰", "奥迪", "大众", "丰田", "特斯拉"]
dogs = ["哈士奇", "萨摩耶", "泰迪", "金毛", "牧羊犬", "吉娃娃", "柯基"]
week = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]

Faker.values() 随机返回长度为7的 [ 20 , 150 ] [20,150] [20,150]之间的整数的列表​ ​list​​。

    @staticmethod
def values(start: int = 20, end: int = 150) -> list:
return [random.randint(start, end) for _ in range(7)]

b.动画设置(弹性弹出)

    Bar(
init_opts=opts.InitOpts(
animation_opts=opts.AnimationOpts(
animation_delay=1000, animation_easing="elasticOut"
)
)
)

c.渐变圆柱

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), category_gap="60%")
.set_series_opts(
itemstyle_opts={
"normal": {
"color": JsCode(
"""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(0, 244, 255, 1)'
}, {
offset: 1,
color: 'rgba(0, 77, 167, 1)'
}], false)"""
),
"barBorderRadius": [30, 30, 30, 30],
"shadowColor": "rgb(0, 160, 221)",
}
}
)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-渐变圆柱"))
.render("bar_border_radius.html")
)

pyecharts学习_自定义_06

d.自定义柱状颜色

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker


color_function = """
function (params) {
if (params.value > 0 && params.value < 50) {
return 'red';
} else if (params.value > 50 && params.value < 100) {
return 'blue';
}
return 'green';
}
"""
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis(
"商家A",
Faker.values(),
itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
)
.add_yaxis(
"商家B",
Faker.values(),
itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
)
.add_yaxis(
"商家C",
Faker.values(),
itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-自定义柱状颜色"))
.render("bar_custom_bar_color.html")
)

pyecharts学习_自定义_07

e.区域缩放

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.days_attrs)
.add_yaxis("商家A", Faker.days_values, color=Faker.rand_color())
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-DataZoom(slider+inside)"),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],
)
.render("bar_datazoom_both.html")
)

pyecharts学习_自定义_08

slider 增加一个拉动框,inside 内置 鼠标滚轮缩放。

默认是slider。

布局方式是横还是竖。不仅是布局方式,对于直角坐标系而言,也决定了,缺省情况控制横向数轴还是纵向数轴 # 可选值为:‘horizontal’, ‘vertical’ ​​orient: str = "horizontal"​

默认是水平。

f.修改不同系列柱间距离

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), gap="0%")
.add_yaxis("商家B", Faker.values(), gap="0%")
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-不同系列柱间距离"))
.render("bar_different_series_gap.html")
)

g.设置组件

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-Graphic 组件示例"),
graphic_opts=[
opts.GraphicGroup(
graphic_item=opts.GraphicItem(
rotation=JsCode("Math.PI / 4"),
bounding="raw",
right=110,
bottom=110,
z=100,
),
children=[
opts.GraphicRect(
graphic_item=opts.GraphicItem(
left="center", top="center", z=100
),
graphic_shape_opts=opts.GraphicShapeOpts(width=400, height=50),
graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
fill="rgba(0,0,0,0.3)"
),
),
opts.GraphicText(
graphic_item=opts.GraphicItem(
left="center", top="center", z=100
),
graphic_textstyle_opts=opts.GraphicTextStyleOpts(
text="pyecharts bar chart",
font="bold 26px Microsoft YaHei",
graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
fill="#fff"
),
),
),
],
)
],
)
.render("bar_graphic_component.html")
)

pyecharts学习_html_09

h.直方图

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), category_gap=0, color=Faker.rand_color())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方图"))
.render("bar_histogram.html")
)

i.取消默认显示某Series

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values(), is_selected=False)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-默认取消显示某 Series"))
.render("bar_is_selected.html")
)

j.设计标记线

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(自定义)"))
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(y=50, name="yAxis=50")]
),
)
.render("bar_markline_custom.html")
)

pyecharts学习_echarts_10

还可指定标记线的类型:其值根据类型计算。

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(指定类型)"))
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(
data=[
opts.MarkLineItem(type_="min", name="最小值"),
opts.MarkLineItem(type_="max", name="最大值"),
opts.MarkLineItem(type_="average", name="平均值"),
]
),
)
.render("bar_markline_type.html")
)

k.设计标记点

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

x, y = Faker.choose(), Faker.values()
c = (
Bar()
.add_xaxis(x)
.add_yaxis(
"商家A",
y,
markpoint_opts=opts.MarkPointOpts(
data=[opts.MarkPointItem(name="自定义标记点", coord=[x[2], y[2]], value=y[2])]
),
)
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkPoint(自定义)"))
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.render("bar_markpoint_custom.html")
)

还可指定标记点的类型:其值根据类型计算。

l.翻转x-y轴

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴"))
.render("bar_reversal_axis.html")
)

m.堆叠数据

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), stack="stack1")
.add_yaxis("商家B", Faker.values(), stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))
.render("bar_stack0.html")
)

pyecharts学习_echarts_11

n.显示工具箱

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-显示 ToolBox"),
toolbox_opts=opts.ToolboxOpts(),
legend_opts=opts.LegendOpts(is_show=False),
)
.render("bar_toolbox.html")
)

pyecharts学习_自定义_12

o.框选工具brush

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-Brush示例", subtitle="我是副标题"),
brush_opts=opts.BrushOpts(),
)
.render("bar_with_brush.html")
)

p.给轴起名字和格式化

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-XY 轴名称"),
yaxis_opts=opts.AxisOpts(name="我是 Y 轴"),
xaxis_opts=opts.AxisOpts(name="我是 X 轴"),
)
.render("bar_xyaxis_name.html")
)

格式化

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-Y 轴 formatter"),
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} /月")),
)
.render("bar_yaxis_formatter.html")
)

r.复杂的实例

import pyecharts.options as opts
from pyecharts.charts import Timeline, Bar, Pie

"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.apache.org/examples/editor.html?c=mix-timeline-finance

目前无法实现的功能:

1、暂无
"""
total_data = {}
name_list = [
"北京",
"天津",
"河北",
"山西",
"内蒙古",
"辽宁",
"吉林",
"黑龙江",
"上海",
"江苏",
"浙江",
"安徽",
"福建",
"江西",
"山东",
"河南",
"湖北",
"湖南",
"广东",
"广西",
"海南",
"重庆",
"四川",
"贵州",
"云南",
"西藏",
"陕西",
"甘肃",
"青海",
"宁夏",
"新疆",
]
data_gdp = {
2011: [
16251.93,
11307.28,
24515.76,
11237.55,
14359.88,
22226.7,
10568.83,
12582,
19195.69,
49110.27,
32318.85,
15300.65,
17560.18,
11702.82,
45361.85,
26931.03,
19632.26,
19669.56,
53210.28,
11720.87,
2522.66,
10011.37,
21026.68,
5701.84,
8893.12,
605.83,
12512.3,
5020.37,
1670.44,
2102.21,
6610.05,
],
2010: [
14113.58,
9224.46,
20394.26,
9200.86,
11672,
18457.27,
8667.58,
10368.6,
17165.98,
41425.48,
27722.31,
12359.33,
14737.12,
9451.26,
39169.92,
23092.36,
15967.61,
16037.96,
46013.06,
9569.85,
2064.5,
7925.58,
17185.48,
4602.16,
7224.18,
507.46,
10123.48,
4120.75,
1350.43,
1689.65,
5437.47,
],
2009: [
12153.03,
7521.85,
17235.48,
7358.31,
9740.25,
15212.49,
7278.75,
8587,
15046.45,
34457.3,
22990.35,
10062.82,
12236.53,
7655.18,
33896.65,
19480.46,
12961.1,
13059.69,
39482.56,
7759.16,
1654.21,
6530.01,
14151.28,
3912.68,
6169.75,
441.36,
8169.8,
3387.56,
1081.27,
1353.31,
4277.05,
],
2008: [
11115,
6719.01,
16011.97,
7315.4,
8496.2,
13668.58,
6426.1,
8314.37,
14069.87,
30981.98,
21462.69,
8851.66,
10823.01,
6971.05,
30933.28,
18018.53,
11328.92,
11555,
36796.71,
7021,
1503.06,
5793.66,
12601.23,
3561.56,
5692.12,
394.85,
7314.58,
3166.82,
1018.62,
1203.92,
4183.21,
],
2007: [
9846.81,
5252.76,
13607.32,
6024.45,
6423.18,
11164.3,
5284.69,
7104,
12494.01,
26018.48,
18753.73,
7360.92,
9248.53,
5800.25,
25776.91,
15012.46,
9333.4,
9439.6,
31777.01,
5823.41,
1254.17,
4676.13,
10562.39,
2884.11,
4772.52,
341.43,
5757.29,
2703.98,
797.35,
919.11,
3523.16,
],
2006: [
8117.78,
4462.74,
11467.6,
4878.61,
4944.25,
9304.52,
4275.12,
6211.8,
10572.24,
21742.05,
15718.47,
6112.5,
7583.85,
4820.53,
21900.19,
12362.79,
7617.47,
7688.67,
26587.76,
4746.16,
1065.67,
3907.23,
8690.24,
2338.98,
3988.14,
290.76,
4743.61,
2277.35,
648.5,
725.9,
3045.26,
],
2005: [
6969.52,
3905.64,
10012.11,
4230.53,
3905.03,
8047.26,
3620.27,
5513.7,
9247.66,
18598.69,
13417.68,
5350.17,
6554.69,
4056.76,
18366.87,
10587.42,
6590.19,
6596.1,
22557.37,
3984.1,
918.75,
3467.72,
7385.1,
2005.42,
3462.73,
248.8,
3933.72,
1933.98,
543.32,
612.61,
2604.19,
],
2004: [
6033.21,
3110.97,
8477.63,
3571.37,
3041.07,
6672,
3122.01,
4750.6,
8072.83,
15003.6,
11648.7,
4759.3,
5763.35,
3456.7,
15021.84,
8553.79,
5633.24,
5641.94,
18864.62,
3433.5,
819.66,
3034.58,
6379.63,
1677.8,
3081.91,
220.34,
3175.58,
1688.49,
466.1,
537.11,
2209.09,
],
2003: [
5007.21,
2578.03,
6921.29,
2855.23,
2388.38,
6002.54,
2662.08,
4057.4,
6694.23,
12442.87,
9705.02,
3923.11,
4983.67,
2807.41,
12078.15,
6867.7,
4757.45,
4659.99,
15844.64,
2821.11,
713.96,
2555.72,
5333.09,
1426.34,
2556.02,
185.09,
2587.72,
1399.83,
390.2,
445.36,
1886.35,
],
2002: [
4315,
2150.76,
6018.28,
2324.8,
1940.94,
5458.22,
2348.54,
3637.2,
5741.03,
10606.85,
8003.67,
3519.72,
4467.55,
2450.48,
10275.5,
6035.48,
4212.82,
4151.54,
13502.42,
2523.73,
642.73,
2232.86,
4725.01,
1243.43,
2312.82,
162.04,
2253.39,
1232.03,
340.65,
377.16,
1612.6,
],
}

data_pi = {
2011: [
136.27,
159.72,
2905.73,
641.42,
1306.3,
1915.57,
1277.44,
1701.5,
124.94,
3064.78,
1583.04,
2015.31,
1612.24,
1391.07,
3973.85,
3512.24,
2569.3,
2768.03,
2665.2,
2047.23,
659.23,
844.52,
2983.51,
726.22,
1411.01,
74.47,
1220.9,
678.75,
155.08,
184.14,
1139.03,
],
2010: [
124.36,
145.58,
2562.81,
554.48,
1095.28,
1631.08,
1050.15,
1302.9,
114.15,
2540.1,
1360.56,
1729.02,
1363.67,
1206.98,
3588.28,
3258.09,
2147,
2325.5,
2286.98,
1675.06,
539.83,
685.38,
2482.89,
625.03,
1108.38,
68.72,
988.45,
599.28,
134.92,
159.29,
1078.63,
],
2009: [
118.29,
128.85,
2207.34,
477.59,
929.6,
1414.9,
980.57,
1154.33,
113.82,
2261.86,
1163.08,
1495.45,
1182.74,
1098.66,
3226.64,
2769.05,
1795.9,
1969.69,
2010.27,
1458.49,
462.19,
606.8,
2240.61,
550.27,
1067.6,
63.88,
789.64,
497.05,
107.4,
127.25,
759.74,
],
2008: [
112.83,
122.58,
2034.59,
313.58,
907.95,
1302.02,
916.72,
1088.94,
111.8,
2100.11,
1095.96,
1418.09,
1158.17,
1060.38,
3002.65,
2658.78,
1780,
1892.4,
1973.05,
1453.75,
436.04,
575.4,
2216.15,
539.19,
1020.56,
60.62,
753.72,
462.27,
105.57,
118.94,
691.07,
],
2007: [
101.26,
110.19,
1804.72,
311.97,
762.1,
1133.42,
783.8,
915.38,
101.84,
1816.31,
986.02,
1200.18,
1002.11,
905.77,
2509.14,
2217.66,
1378,
1626.48,
1695.57,
1241.35,
361.07,
482.39,
2032,
446.38,
837.35,
54.89,
592.63,
387.55,
83.41,
97.89,
628.72,
],
2006: [
88.8,
103.35,
1461.81,
276.77,
634.94,
939.43,
672.76,
750.14,
93.81,
1545.05,
925.1,
1011.03,
865.98,
786.14,
2138.9,
1916.74,
1140.41,
1272.2,
1532.17,
1032.47,
323.48,
386.38,
1595.48,
382.06,
724.4,
50.9,
484.81,
334,
67.55,
79.54,
527.8,
],
2005: [
88.68,
112.38,
1400,
262.42,
589.56,
882.41,
625.61,
684.6,
90.26,
1461.51,
892.83,
966.5,
827.36,
727.37,
1963.51,
1892.01,
1082.13,
1100.65,
1428.27,
912.5,
300.75,
463.4,
1481.14,
368.94,
661.69,
48.04,
435.77,
308.06,
65.34,
72.07,
509.99,
],
2004: [
87.36,
105.28,
1370.43,
276.3,
522.8,
798.43,
568.69,
605.79,
83.45,
1367.58,
814.1,
950.5,
786.84,
664.5,
1778.45,
1649.29,
1020.09,
1022.45,
1248.59,
817.88,
278.76,
428.05,
1379.93,
334.5,
607.75,
44.3,
387.88,
286.78,
60.7,
65.33,
461.26,
],
2003: [
84.11,
89.91,
1064.05,
215.19,
420.1,
615.8,
488.23,
504.8,
81.02,
1162.45,
717.85,
749.4,
692.94,
560,
1480.67,
1198.7,
798.35,
886.47,
1072.91,
658.78,
244.29,
339.06,
1128.61,
298.69,
494.6,
40.7,
302.66,
237.91,
48.47,
55.63,
412.9,
],
2002: [
82.44,
84.21,
956.84,
197.8,
374.69,
590.2,
446.17,
474.2,
79.68,
1110.44,
685.2,
783.66,
664.78,
535.98,
1390,
1288.36,
707,
847.25,
1015.08,
601.99,
222.89,
317.87,
1047.95,
281.1,
463.44,
39.75,
282.21,
215.51,
47.31,
52.95,
305,
],
}

data_si = {
2011: [
3752.48,
5928.32,
13126.86,
6635.26,
8037.69,
12152.15,
5611.48,
5962.41,
7927.89,
25203.28,
16555.58,
8309.38,
9069.2,
6390.55,
24017.11,
15427.08,
9815.94,
9361.99,
26447.38,
5675.32,
714.5,
5543.04,
11029.13,
2194.33,
3780.32,
208.79,
6935.59,
2377.83,
975.18,
1056.15,
3225.9,
],
2010: [
3388.38,
4840.23,
10707.68,
5234,
6367.69,
9976.82,
4506.31,
5025.15,
7218.32,
21753.93,
14297.93,
6436.62,
7522.83,
5122.88,
21238.49,
13226.38,
7767.24,
7343.19,
23014.53,
4511.68,
571,
4359.12,
8672.18,
1800.06,
3223.49,
163.92,
5446.1,
1984.97,
744.63,
827.91,
2592.15,
],
2009: [
2855.55,
3987.84,
8959.83,
3993.8,
5114,
7906.34,
3541.92,
4060.72,
6001.78,
18566.37,
11908.49,
4905.22,
6005.3,
3919.45,
18901.83,
11010.5,
6038.08,
5687.19,
19419.7,
3381.54,
443.43,
3448.77,
6711.87,
1476.62,
2582.53,
136.63,
4236.42,
1527.24,
575.33,
662.32,
1929.59,
],
2008: [
2626.41,
3709.78,
8701.34,
4242.36,
4376.19,
7158.84,
3097.12,
4319.75,
6085.84,
16993.34,
11567.42,
4198.93,
5318.44,
3554.81,
17571.98,
10259.99,
5082.07,
5028.93,
18502.2,
3037.74,
423.55,
3057.78,
5823.39,
1370.03,
2452.75,
115.56,
3861.12,
1470.34,
557.12,
609.98,
2070.76,
],
2007: [
2509.4,
2892.53,
7201.88,
3454.49,
3193.67,
5544.14,
2475.45,
3695.58,
5571.06,
14471.26,
10154.25,
3370.96,
4476.42,
2975.53,
14647.53,
8282.83,
4143.06,
3977.72,
16004.61,
2425.29,
364.26,
2368.53,
4648.79,
1124.79,
2038.39,
98.48,
2986.46,
1279.32,
419.03,
455.04,
1647.55,
],
2006: [
2191.43,
2457.08,
6110.43,
2755.66,
2374.96,
4566.83,
1915.29,
3365.31,
4969.95,
12282.89,
8511.51,
2711.18,
3695.04,
2419.74,
12574.03,
6724.61,
3365.08,
3187.05,
13469.77,
1878.56,
308.62,
1871.65,
3775.14,
967.54,
1705.83,
80.1,
2452.44,
1043.19,
331.91,
351.58,
1459.3,
],
2005: [
2026.51,
2135.07,
5271.57,
2357.04,
1773.21,
3869.4,
1580.83,
2971.68,
4381.2,
10524.96,
7164.75,
2245.9,
3175.92,
1917.47,
10478.62,
5514.14,
2852.12,
2612.57,
11356.6,
1510.68,
240.83,
1564,
3067.23,
821.16,
1426.42,
63.52,
1951.36,
838.56,
264.61,
281.05,
1164.79,
],
2004: [
1853.58,
1685.93,
4301.73,
1919.4,
1248.27,
3061.62,
1329.68,
2487.04,
3892.12,
8437.99,
6250.38,
1844.9,
2770.49,
1566.4,
8478.69,
4182.1,
2320.6,
2190.54,
9280.73,
1253.7,
205.6,
1376.91,
2489.4,
681.5,
1281.63,
52.74,
1553.1,
713.3,
211.7,
244.05,
914.47,
],
2003: [
1487.15,
1337.31,
3417.56,
1463.38,
967.49,
2898.89,
1098.37,
2084.7,
3209.02,
6787.11,
5096.38,
1535.29,
2340.82,
1204.33,
6485.05,
3310.14,
1956.02,
1777.74,
7592.78,
984.08,
175.82,
1135.31,
2014.8,
569.37,
1047.66,
47.64,
1221.17,
572.02,
171.92,
194.27,
719.54,
],
2002: [
1249.99,
1069.08,
2911.69,
1134.31,
754.78,
2609.85,
943.49,
1843.6,
2622.45,
5604.49,
4090.48,
1337.04,
2036.97,
941.77,
5184.98,
2768.75,
1709.89,
1523.5,
6143.4,
846.89,
148.88,
958.87,
1733.38,
481.96,
934.88,
32.72,
1007.56,
501.69,
144.51,
153.06,
603.15,
],
}

data_ti = {
2011: [
12363.18,
5219.24,
8483.17,
3960.87,
5015.89,
8158.98,
3679.91,
4918.09,
11142.86,
20842.21,
14180.23,
4975.96,
6878.74,
3921.2,
17370.89,
7991.72,
7247.02,
7539.54,
24097.7,
3998.33,
1148.93,
3623.81,
7014.04,
2781.29,
3701.79,
322.57,
4355.81,
1963.79,
540.18,
861.92,
2245.12,
],
2010: [
10600.84,
4238.65,
7123.77,
3412.38,
4209.03,
6849.37,
3111.12,
4040.55,
9833.51,
17131.45,
12063.82,
4193.69,
5850.62,
3121.4,
14343.14,
6607.89,
6053.37,
6369.27,
20711.55,
3383.11,
953.67,
2881.08,
6030.41,
2177.07,
2892.31,
274.82,
3688.93,
1536.5,
470.88,
702.45,
1766.69,
],
2009: [
9179.19,
3405.16,
6068.31,
2886.92,
3696.65,
5891.25,
2756.26,
3371.95,
8930.85,
13629.07,
9918.78,
3662.15,
5048.49,
2637.07,
11768.18,
5700.91,
5127.12,
5402.81,
18052.59,
2919.13,
748.59,
2474.44,
5198.8,
1885.79,
2519.62,
240.85,
3143.74,
1363.27,
398.54,
563.74,
1587.72,
],
2008: [
8375.76,
2886.65,
5276.04,
2759.46,
3212.06,
5207.72,
2412.26,
2905.68,
7872.23,
11888.53,
8799.31,
3234.64,
4346.4,
2355.86,
10358.64,
5099.76,
4466.85,
4633.67,
16321.46,
2529.51,
643.47,
2160.48,
4561.69,
1652.34,
2218.81,
218.67,
2699.74,
1234.21,
355.93,
475,
1421.38,
],
2007: [
7236.15,
2250.04,
4600.72,
2257.99,
2467.41,
4486.74,
2025.44,
2493.04,
6821.11,
9730.91,
7613.46,
2789.78,
3770,
1918.95,
8620.24,
4511.97,
3812.34,
3835.4,
14076.83,
2156.76,
528.84,
1825.21,
3881.6,
1312.94,
1896.78,
188.06,
2178.2,
1037.11,
294.91,
366.18,
1246.89,
],
2006: [
5837.55,
1902.31,
3895.36,
1846.18,
1934.35,
3798.26,
1687.07,
2096.35,
5508.48,
7914.11,
6281.86,
2390.29,
3022.83,
1614.65,
7187.26,
3721.44,
3111.98,
3229.42,
11585.82,
1835.12,
433.57,
1649.2,
3319.62,
989.38,
1557.91,
159.76,
1806.36,
900.16,
249.04,
294.78,
1058.16,
],
2005: [
4854.33,
1658.19,
3340.54,
1611.07,
1542.26,
3295.45,
1413.83,
1857.42,
4776.2,
6612.22,
5360.1,
2137.77,
2551.41,
1411.92,
5924.74,
3181.27,
2655.94,
2882.88,
9772.5,
1560.92,
377.17,
1440.32,
2836.73,
815.32,
1374.62,
137.24,
1546.59,
787.36,
213.37,
259.49,
929.41,
],
2004: [
4092.27,
1319.76,
2805.47,
1375.67,
1270,
2811.95,
1223.64,
1657.77,
4097.26,
5198.03,
4584.22,
1963.9,
2206.02,
1225.8,
4764.7,
2722.4,
2292.55,
2428.95,
8335.3,
1361.92,
335.3,
1229.62,
2510.3,
661.8,
1192.53,
123.3,
1234.6,
688.41,
193.7,
227.73,
833.36,
],
2003: [
3435.95,
1150.81,
2439.68,
1176.65,
1000.79,
2487.85,
1075.48,
1467.9,
3404.19,
4493.31,
3890.79,
1638.42,
1949.91,
1043.08,
4112.43,
2358.86,
2003.08,
1995.78,
7178.94,
1178.25,
293.85,
1081.35,
2189.68,
558.28,
1013.76,
96.76,
1063.89,
589.91,
169.81,
195.46,
753.91,
],
2002: [
2982.57,
997.47,
2149.75,
992.69,
811.47,
2258.17,
958.88,
1319.4,
3038.9,
3891.92,
3227.99,
1399.02,
1765.8,
972.73,
3700.52,
1978.37,
1795.93,
1780.79,
6343.94,
1074.85,
270.96,
956.12,
1943.68,
480.37,
914.5,
89.56,
963.62,
514.83,
148.83,
171.14,
704.5,
],
}

data_estate = {
2011: [
12363.18,
5219.24,
8483.17,
3960.87,
5015.89,
8158.98,
3679.91,
4918.09,
11142.86,
20842.21,
14180.23,
4975.96,
6878.74,
3921.2,
17370.89,
7991.72,
7247.02,
7539.54,
24097.7,
3998.33,
1148.93,
3623.81,
7014.04,
2781.29,
3701.79,
322.57,
4355.81,
1963.79,
540.18,
861.92,
2245.12,
],
2010: [
10600.84,
4238.65,
7123.77,
3412.38,
4209.03,
6849.37,
3111.12,
4040.55,
9833.51,
17131.45,
12063.82,
4193.69,
5850.62,
3121.4,
14343.14,
6607.89,
6053.37,
6369.27,
20711.55,
3383.11,
953.67,
2881.08,
6030.41,
2177.07,
2892.31,
274.82,
3688.93,
1536.5,
470.88,
702.45,
1766.69,
],
2009: [
9179.19,
3405.16,
6068.31,
2886.92,
3696.65,
5891.25,
2756.26,
3371.95,
8930.85,
13629.07,
9918.78,
3662.15,
5048.49,
2637.07,
11768.18,
5700.91,
5127.12,
5402.81,
18052.59,
2919.13,
748.59,
2474.44,
5198.8,
1885.79,
2519.62,
240.85,
3143.74,
1363.27,
398.54,
563.74,
1587.72,
],
2008: [
8375.76,
2886.65,
5276.04,
2759.46,
3212.06,
5207.72,
2412.26,
2905.68,
7872.23,
11888.53,
8799.31,
3234.64,
4346.4,
2355.86,
10358.64,
5099.76,
4466.85,
4633.67,
16321.46,
2529.51,
643.47,
2160.48,
4561.69,
1652.34,
2218.81,
218.67,
2699.74,
1234.21,
355.93,
475,
1421.38,
],
2007: [
7236.15,
2250.04,
4600.72,
2257.99,
2467.41,
4486.74,
2025.44,
2493.04,
6821.11,
9730.91,
7613.46,
2789.78,
3770,
1918.95,
8620.24,
4511.97,
3812.34,
3835.4,
14076.83,
2156.76,
528.84,
1825.21,
3881.6,
1312.94,
1896.78,
188.06,
2178.2,
1037.11,
294.91,
366.18,
1246.89,
],
2006: [
5837.55,
1902.31,
3895.36,
1846.18,
1934.35,
3798.26,
1687.07,
2096.35,
5508.48,
7914.11,
6281.86,
2390.29,
3022.83,
1614.65,
7187.26,
3721.44,
3111.98,
3229.42,
11585.82,
1835.12,
433.57,
1649.2,
3319.62,
989.38,
1557.91,
159.76,
1806.36,
900.16,
249.04,
294.78,
1058.16,
],
2005: [
4854.33,
1658.19,
3340.54,
1611.07,
1542.26,
3295.45,
1413.83,
1857.42,
4776.2,
6612.22,
5360.1,
2137.77,
2551.41,
1411.92,
5924.74,
3181.27,
2655.94,
2882.88,
9772.5,
1560.92,
377.17,
1440.32,
2836.73,
815.32,
1374.62,
137.24,
1546.59,
787.36,
213.37,
259.49,
929.41,
],
2004: [
4092.27,
1319.76,
2805.47,
1375.67,
1270,
2811.95,
1223.64,
1657.77,
4097.26,
5198.03,
4584.22,
1963.9,
2206.02,
1225.8,
4764.7,
2722.4,
2292.55,
2428.95,
8335.3,
1361.92,
335.3,
1229.62,
2510.3,
661.8,
1192.53,
123.3,
1234.6,
688.41,
193.7,
227.73,
833.36,
],
2003: [
3435.95,
1150.81,
2439.68,
1176.65,
1000.79,
2487.85,
1075.48,
1467.9,
3404.19,
4493.31,
3890.79,
1638.42,
1949.91,
1043.08,
4112.43,
2358.86,
2003.08,
1995.78,
7178.94,
1178.25,
293.85,
1081.35,
2189.68,
558.28,
1013.76,
96.76,
1063.89,
589.91,
169.81,
195.46,
753.91,
],
2002: [
2982.57,
997.47,
2149.75,
992.69,
811.47,
2258.17,
958.88,
1319.4,
3038.9,
3891.92,
3227.99,
1399.02,
1765.8,
972.73,
3700.52,
1978.37,
1795.93,
1780.79,
6343.94,
1074.85,
270.96,
956.12,
1943.68,
480.37,
914.5,
89.56,
963.62,
514.83,
148.83,
171.14,
704.5,
],
}

data_financial = {
2011: [
12363.18,
5219.24,
8483.17,
3960.87,
5015.89,
8158.98,
3679.91,
4918.09,
11142.86,
20842.21,
14180.23,
4975.96,
6878.74,
3921.2,
17370.89,
7991.72,
7247.02,
7539.54,
24097.7,
3998.33,
1148.93,
3623.81,
7014.04,
2781.29,
3701.79,
322.57,
4355.81,
1963.79,
540.18,
861.92,
2245.12,
],
2010: [
10600.84,
4238.65,
7123.77,
3412.38,
4209.03,
6849.37,
3111.12,
4040.55,
9833.51,
17131.45,
12063.82,
4193.69,
5850.62,
3121.4,
14343.14,
6607.89,
6053.37,
6369.27,
20711.55,
3383.11,
953.67,
2881.08,
6030.41,
2177.07,
2892.31,
274.82,
3688.93,
1536.5,
470.88,
702.45,
1766.69,
],
2009: [
9179.19,
3405.16,
6068.31,
2886.92,
3696.65,
5891.25,
2756.26,
3371.95,
8930.85,
13629.07,
9918.78,
3662.15,
5048.49,
2637.07,
11768.18,
5700.91,
5127.12,
5402.81,
18052.59,
2919.13,
748.59,
2474.44,
5198.8,
1885.79,
2519.62,
240.85,
3143.74,
1363.27,
398.54,
563.74,
1587.72,
],
2008: [
8375.76,
2886.65,
5276.04,
2759.46,
3212.06,
5207.72,
2412.26,
2905.68,
7872.23,
11888.53,
8799.31,
3234.64,
4346.4,
2355.86,
10358.64,
5099.76,
4466.85,
4633.67,
16321.46,
2529.51,
643.47,
2160.48,
4561.69,
1652.34,
2218.81,
218.67,
2699.74,
1234.21,
355.93,
475,
1421.38,
],
2007: [
7236.15,
2250.04,
4600.72,
2257.99,
2467.41,
4486.74,
2025.44,
2493.04,
6821.11,
9730.91,
7613.46,
2789.78,
3770,
1918.95,
8620.24,
4511.97,
3812.34,
3835.4,
14076.83,
2156.76,
528.84,
1825.21,
3881.6,
1312.94,
1896.78,
188.06,
2178.2,
1037.11,
294.91,
366.18,
1246.89,
],
2006: [
5837.55,
1902.31,
3895.36,
1846.18,
1934.35,
3798.26,
1687.07,
2096.35,
5508.48,
7914.11,
6281.86,
2390.29,
3022.83,
1614.65,
7187.26,
3721.44,
3111.98,
3229.42,
11585.82,
1835.12,
433.57,
1649.2,
3319.62,
989.38,
1557.91,
159.76,
1806.36,
900.16,
249.04,
294.78,
1058.16,
],
2005: [
4854.33,
1658.19,
3340.54,
1611.07,
1542.26,
3295.45,
1413.83,
1857.42,
4776.2,
6612.22,
5360.1,
2137.77,
2551.41,
1411.92,
5924.74,
3181.27,
2655.94,
2882.88,
9772.5,
1560.92,
377.17,
1440.32,
2836.73,
815.32,
1374.62,
137.24,
1546.59,
787.36,
213.37,
259.49,
929.41,
],
2004: [
4092.27,
1319.76,
2805.47,
1375.67,
1270,
2811.95,
1223.64,
1657.77,
4097.26,
5198.03,
4584.22,
1963.9,
2206.02,
1225.8,
4764.7,
2722.4,
2292.55,
2428.95,
8335.3,
1361.92,
335.3,
1229.62,
2510.3,
661.8,
1192.53,
123.3,
1234.6,
688.41,
193.7,
227.73,
833.36,
],
2003: [
3435.95,
1150.81,
2439.68,
1176.65,
1000.79,
2487.85,
1075.48,
1467.9,
3404.19,
4493.31,
3890.79,
1638.42,
1949.91,
1043.08,
4112.43,
2358.86,
2003.08,
1995.78,
7178.94,
1178.25,
293.85,
1081.35,
2189.68,
558.28,
1013.76,
96.76,
1063.89,
589.91,
169.81,
195.46,
753.91,
],
2002: [
2982.57,
997.47,
2149.75,
992.69,
811.47,
2258.17,
958.88,
1319.4,
3038.9,
3891.92,
3227.99,
1399.02,
1765.8,
972.73,
3700.52,
1978.37,
1795.93,
1780.79,
6343.94,
1074.85,
270.96,
956.12,
1943.68,
480.37,
914.5,
89.56,
963.62,
514.83,
148.83,
171.14,
704.5,
],
}


def format_data(data: dict) -> dict:
for year in range(2002, 2012):
max_data, sum_data = 0, 0
temp = data[year]
max_data = max(temp)
for i in range(len(temp)):
sum_data += temp[i]
data[year][i] = {"name": name_list[i], "value": temp[i]}
data[str(year) + "max"] = int(max_data / 100) * 100
data[str(year) + "sum"] = sum_data
return data


# GDP
total_data["dataGDP"] = format_data(data=data_gdp)
# 第一产业
total_data["dataPI"] = format_data(data=data_pi)
# 第二产业
total_data["dataSI"] = format_data(data=data_si)
# 第三产业
total_data["dataTI"] = format_data(data=data_ti)
# 房地产
total_data["dataEstate"] = format_data(data=data_estate)
# 金融
total_data["dataFinancial"] = format_data(data=data_financial)


#####################################################################################
# 2002 - 2011 年的数据
def get_year_overlap_chart(year: int) -> Bar:
bar = (
Bar()
.add_xaxis(xaxis_data=name_list)
.add_yaxis(
series_name="GDP",
y_axis=total_data["dataGDP"][year],
is_selected=False,
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="金融",
y_axis=total_data["dataFinancial"][year],
is_selected=False,
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="房地产",
y_axis=total_data["dataEstate"][year],
is_selected=False,
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="第一产业",
y_axis=total_data["dataPI"][year],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="第二产业",
y_axis=total_data["dataSI"][year],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="第三产业",
y_axis=total_data["dataTI"][year],
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="{}全国宏观经济指标".format(year), subtitle="数据来自国家统计局"
),
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="shadow"
),
)
)
pie = (
Pie()
.add(
series_name="GDP占比",
data_pair=[
["第一产业", total_data["dataPI"]["{}sum".format(year)]],
["第二产业", total_data["dataSI"]["{}sum".format(year)]],
["第三产业", total_data["dataTI"]["{}sum".format(year)]],
],
center=["75%", "35%"],
radius="28%",
)
.set_series_opts(tooltip_opts=opts.TooltipOpts(is_show=True, trigger="item"))
)
return bar.overlap(pie)


# 生成时间轴的图
timeline = Timeline()

for y in range(2002, 2012):
timeline.add(get_year_overlap_chart(year=y), time_point=str(y))

# 1.0.0 版本的 add_schema 暂时没有补上 return self 所以只能这么写着
timeline.add_schema(is_auto_play=True, play_interval=1000)
timeline.render("finance_indices_2002.html")

pyecharts学习_前端_13

6.参考内容

a.官网

​https://pyecharts.org/​