使用python調用echart畫圖
之前說了如何使用阿裏雲的SDK獲取雲存儲的值然後發送表格郵件,但是最近領導又發話了,說這個郵件每天一封看的有點審美疲勞,要響應“數據可視化”的要求,於是就要求畫圖,要求直觀。我之前用python的matplotlib畫過(https://rorschachchan.github.io/2018/02/27/使用matplotlib畫圖的一個腳本/ ),這一次嘗試用echart來做圖!
echart是不太良心的百度良心的開源作品,提供各種各樣精美的作圖方案,分分鐘把圖片做的高大上,吸引周圍人的目光。不過我對前端的了解非常淺薄,但是沒關系。這次使用pyechart
插件!這個插件可以讓python
直接調用echart
作圖
首先先需要安裝pyecharts
插件,命令是pip install pyecharts
:
然後我們就可以寫一個簡單的案例,如下:
#!/usr/bin/env python #coding=utf-8 from pyecharts import Bar #導入第三方庫 #attr = ["{}day".format(i) for i in range(1, 8)] #這樣的話X坐標就是1day、2day、3day... attr = ["Mon", "Feb", "Wed", "Thu", "Fri", "Sat", "Sun"] #這樣X坐標就是星期 v1 = [1.49, 2.09, 4.03, 2.23, 5.26, 7.71, 7.56] v2 = [0.3, 0.9, 0.2, 0.4, 0.7, 0.7, 0.6] v3 = [18.15, 13.22, 11.28, 17.99, 18.7, 19.7, 15.6] bar = Bar("XXX情況總覽", "本圖表展示過去一周的ABC情況") #這裏是主標題和副標題 bar.add("A值", attr, v1, mark_line=["average"], mark_point=["max", "min"]) #每一個值的名稱以及要展現平均值和最大最小值 bar.add("B值", attr, v2, mark_line=["average"], mark_point=["max", "min"]) bar.add("C值", attr, v3, mark_line=["average"], mark_point=["max", "min"]) bar.render(‘/tmp/111.html‘) #在/tmp文件夾裏生成一個111.html文件
如果服務器裏有nginx
,那麽把這個html文件放到nginx/html
路徑裏,再在瀏覽器裏打開就會看到這樣的圖,我這裏就直接把html拽到windows裏打開了:
而且還可以通過點擊網頁上“A值”、“B值”、“C值”就可以達到屏蔽相應值的效果,而且如果點擊紅色箭頭的“數據視圖”,還可以直接看到對應的數據,非常貼心非常屌,如圖:
如果你覺得圖片有點小,那麽可以修改這個地方:bar = Bar("XXX情況總覽", "本圖表展示過去一周的ABC情況",width=1000,height=900)
,我這裏把寬和高分別從默認值調成了1000和900。
如果想要在一個html裏展現多個圖,比如要做三個柱狀圖,那麽example如下:
#!/usr/bin/env python
#coding=utf-8
from pyecharts import Bar, Grid
attr = ["一班", "二班", "三班", "四班"]
v1 = [54, 81, 32, 32]
v2 = [68, 69, 27, 32]
bar = Bar("贊成票","本圖表展示贊成票情況")
bar.add("年紀長", attr, v1, mark_point=["max", "min"])
bar.add("副年紀長", attr, v2, mark_point=["max", "min"])
attr2 = ["一班", "二班", "三班", "四班"]
x1 = [2, 0, 0, 1]
x2 = [1, 3, 0, 2]
bar2 = Bar("反對票","本圖表展示反對票情況",title_top=‘bottom‘,title_color=‘#1d12eb‘) #title_color是標題顏色,這個跟html的顏色取值一樣
bar2.add("年紀長", attr2, x1, mark_point=["max", "min"])
bar2.add("副年紀長", attr2, x2, mark_point=["max", "min"])
attr3 = ["一班", "二班", "三班", "四班"]
y1 = [2, 0, 0, 1]
y2 = [2, 0, 0, 1]
bar3 = Bar("棄權票","本圖表展示棄權票情況",title_pos=‘right‘,title_color=‘#eb1212‘) #title_pos是標題的位置,如果不特殊說明,會重疊
bar3.add("年紀長", attr3, y1, mark_point=["max", "min"])
bar3.add("副年紀長", attr3, y1, mark_point=["max", "min"])
grid = Grid()
grid.add(bar, grid_width="40%", grid_height="30%", grid_bottom="60%", grid_right="55%") #grid_height和grid_width是每一個小圖的大小
grid.add(bar2, grid_width="40%", grid_height="30%", grid_bottom="60%", grid_left="55%") #grid_bottom和grid_top是垂直位置
grid.add(bar3, grid_width="40%", grid_height="30%", grid_top="60%", grid_right="55%") #grid_right和grid_left是水平位置
grid.render(‘/tmp/grid.html‘) #在/tmp文件夾裏生成一個grid.html文件
上面的數字都是我舉例子虛擬的,實際情況中,這些數字都應該是存儲在redis這樣的數據庫裏,然後取出來使用。
上面的兩個例子僅僅是pyechart使用的冰山一角,如果想更多的了解,請去看一下文末pyechart
的中文說明文檔,裏面內容特別豐富!
參考資料
http://echarts.baidu.com
http://pyecharts.org/#/zh-cn/prepare
使用python調用echart畫圖