pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。

安装

1
pip install pyecharts

简单实例

1
2
3
4
5
from pyecharts import Bar
bar = Bar("我的第一个图表", "这里是副标题")
bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])
# bar.print_echarts_options() # 该行只为了打印配置项,方便调试时使用
bar.render() # 生成本地 HTML 文件

默认当前目录下生成render.html,使用浏览器打开如下:

图形绘制过程

基本上所有的图表类型都是这样绘制的:

  • chart_name = Type() 初始化具体类型图表。
  • add() 添加数据及配置项。
  • render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。

add() 数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。

1
2
3
4

@staticmethod
cast(seq)
转换数据序列,将带字典和元组类型的序列转换为 k_lst,v_lst 两个列表

  • 元组列表
    [(A1, B1), (A2, B2), (A3, B3), (A4, B4)] –> k_lst[ A[i1, i2…] ], v_lst[ B[i1, i2…] ]
  • 字典列表
    [{A1: B1}, {A2: B2}, {A3: B3}, {A4: B4}] –> k_lst[ A[i1, i2…] ], v_lst[ B[i1, i2…] ]
  • 字典
    {A1: B1, A2: B2, A3: B3, A4: B4} – > k_lst[ A[i1, i2…] ], v_lst[ B[i1, i2…] ]

结合Django显示以上图形

基础环境

  • Django_version: 2.1a1
  • Python_verison: 3.6.5

url.py

1
2
3
4
5
6
7
8
from django.contrib import admin
from django.urls import path,re_path
from django.views.generic import TemplateView #通用视图
from apps.ops import views

urlpatterns = [
re_path(r'^test/$', views.test),
]

app.ops.views.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from pyecharts import Bar
import math
# Create your views here.

REMOTE_HOST = "https://pyecharts.github.io/assets/js"



def test(request):
template = loader.get_template('test/pyecharts.html')
b = bar()
context = dict(
myechart=b.render_embed(),
host=REMOTE_HOST,
script_list=b.get_js_dependencies()
)
return HttpResponse(template.render(context, request))


def bar():
bar = Bar("我的第一个图表", "这里是副标题")
bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])
# bar.print_echarts_options() # 该行只为了打印配置项,方便调试时使用
# bar.render() # 生成本地 HTML 文件
return bar
  • script_list 是 Page() 类渲染网页所需要依赖的 echarts js 库,依赖的库的数量取决于所要渲染的图形种类。

  • host 是 echarts js 库的地址,默认提供的地址为 https://pyecharts.github.io/assets/js 当然,如果你愿意你也可以改变这个地址,先克隆 https://github.com/pyecharts/assets 然后将 js 文件夹挂载在你自己的服务器上即可。

templates/test/pyecharts.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- myfirstvis/templates/pyecharts.html -->
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>Proudly presented by PycCharts</title>
{% for jsfile_name in script_list %}
<script src="{{ host }}/{{ jsfile_name }}.js"></script>
{% endfor %}
</head>

<body>
{{ myechart|safe }}
</body>

</html>

启动django访问/test/即可

Comments

2018-07-29