當前位置:
首頁 > 知識 > Python可視化神器——pyecharts的超詳細使用指南!

Python可視化神器——pyecharts的超詳細使用指南!

源 | 機器之心 文 | wengJJ

pyecharts是一款將python與echarts結合的強大的數據可視化工具,本文將為你闡述pyecharts的使用細則

前言

我們都知道python上的一款可視化工具matplotlib,而前些陣子做一個Spark項目的時候用到了百度開源的一個可視化JS工具-Echarts,可視化類型非常多,但是得通過導入js庫在Java Web項目上運行,平時用Python比較多,於是就在想有沒有Python與Echarts結合的輪子。Google後,找到一個國人開發的一個Echarts與Python結合的輪子:pyecharts,下面就來簡述下pyecharts一些使用細則:

安裝

寫這篇文章用的是Win環境,首先打開命令行(win+R),輸入:

但筆者實測時發現,由於牆的原因,下載時會出現斷線和速度過慢的問題導致下載失敗,所以建議通過清華鏡像來進行下載:

出現上方的信息,即代表下載成功,我們可以來進行下一步的實驗了!

使用實例

使用之前我們要強調一點:就是python2.x和python3.x的編碼問題,在python3.x中你可以把它看做默認是unicode編碼,但在python2.x中並不是默認的,原因就在它的bytes對象定義的混亂,而pycharts是使用unicode編碼來處理字元串和文件的,所以當你使用的是python2.x時,請務必在上方插入此代碼:

from __future__ import unicode_literals

現在我們來開始正式使用pycharts,這裡我們直接使用官方的數據:

柱狀圖-Bar

//導入柱狀圖-Barfrom pyecharts import Bar//設置行名columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]//設置數據data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]//設置柱狀圖的主標題與副標題bar = Bar("柱狀圖", "一年的降水量與蒸發量")//添加柱狀圖的數據及配置項bar.add("降水量", columns, data1, mark_line=["average"], mark_point=["max", "min"])bar.add("蒸發量", columns, data2, mark_line=["average"], mark_point=["max", "min"])//生成本地文件(默認為.html文件)bar.render()

運行結果如下:

簡單的幾行代碼就可以將數據進行非常好看的可視化,而且還是動態的,在這裡還是要安利一下jupyter,pyecharts在v0.1.9.2版本開始,在jupyter上直接調用實例(例如上方直接調用bar)就可以將圖表直接表示出來,非常方便。

筆者數了數,目前pyecharts上的圖表大概支持到二十多種,接下來,我們再用上方的數據來生成幾個數據挖掘常用的圖表示例:

餅圖-Pie

//導入餅圖Piefrom pyecharts import Pie//設置主標題與副標題,標題設置居中,設置寬度為900pie = Pie("餅狀圖", "一年的降水量與蒸發量",title_pos="center",width=900)//加入數據,設置坐標位置為【25,50】,上方的colums選項取消顯示pie.add("降水量", columns, data1 ,center=[25,50],is_legend_show=False)//加入數據,設置坐標位置為【75,50】,上方的colums選項取消顯示,顯示label標籤pie.add("蒸發量", columns, data2 ,center=[75,50],is_legend_show=False,is_label_show=True)//保存圖表pie.render()


箱體圖-Boxplot

//導入箱型圖Boxplotfrom pyecharts import Boxplot boxplot = Boxplot("箱形圖", "一年的降水量與蒸發量")x_axis = ["降水量","蒸發量"]y_axis = [data1,data2]//prepare_data方法可以將數據轉為嵌套的 [min, Q1, median (or Q2), Q3, max]yaxis = boxplot.prepare_data(y_axis) boxplot.add("天氣統計", x_axis, _yaxis)boxplot.render()


折線圖-Line

from pyecharts import Lineline = Line("折線圖","一年的降水量與蒸發量")//is_label_show是設置上方數據是否顯示line.add("降水量", columns, data1, is_label_show=True)line.add("蒸發量", columns, data2, is_label_show=True)line.render()


雷達圖-Rader

from pyecharts import Radarradar = Radar("雷達圖", "一年的降水量與蒸發量")//由於雷達圖傳入的數據得為多維數據,所以這裡需要做一下處理radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]//設置column的最大值,為了雷達圖更為直觀,這裡的月份最大值設置有所不同schema = [ ("Jan", 5), ("Feb",10), ("Mar", 10), ("Apr", 50), ("May", 50), ("Jun", 200), ("Jul", 200), ("Aug", 200), ("Sep", 50), ("Oct", 50), ("Nov", 10), ("Dec", 5)]//傳入坐標radar.config(schema)radar.add("降水量",radar_data1)//一般默認為同一種顏色,這裡為了便於區分,需要設置item的顏色radar.add("蒸發量",radar_data2,item_color="#1C86EE")radar.render()


散點圖-scatter

from pyecharts import Scatterscatter = Scatter("散點圖", "一年的降水量與蒸發量")//xais_name是設置橫坐標名稱,這裡由於顯示問題,還需要將y軸名稱與y軸的距離進行設置scatter.add("降水量與蒸發量的散點分布", data1,data2,xaxis_name="降水量",yaxis_name="蒸發量", yaxis_name_gap=40)scatter.render()

圖表布局 Grid

由於標題與圖表是屬於兩個不同的控制項,所以這裡必須對下方的圖表Line進行標題位置設置,否則會出現標題重疊的bug。

from pyecharts import Grid//設置折線圖標題位置line = Line("折線圖","一年的降水量與蒸發量",title_top="45%")line.add("降水量", columns, data1, is_label_show=True)line.add("蒸發量", columns, data2, is_label_show=True)grid = Grid()//設置兩個圖表的相對位置grid.add(bar, grid_bottom="60%")grid.add(line, grid_top="60%")grid.render()

from pyecharts import Overlapoverlap = Overlap()bar = Bar("柱狀圖-折線圖合併", "一年的降水量與蒸發量")bar.add("降水量", columns, data1, mark_point=["max", "min"])bar.add("蒸發量", columns, data2, mark_point=["max", "min"])overlap.add(bar)overlap.add(line)overlap.render()

總結

導入相關圖表包

進行圖表的基礎設置,創建圖表對象

利用add()方法進行數據輸入與圖表設置(可以使用print_echarts_options()來輸出所有可配置項)

利用render()方法來進行圖表保存

pyecharts還有許多好玩的3D圖表和地圖圖表,個人覺得地圖圖表是最好玩的,各位有興趣可以去pyecharts的使用手冊查看,有中文版的非常方便:pyecharts

-END-

本文選自「機器之心」


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員之家 的精彩文章:

假如整個Windows都是一個人寫的,那他需要多久能寫完?
程序員為什麼更容易脫髮?

TAG:程序員之家 |