| 加入人工智能技術(shù)社區(qū)! 源 | 機(jī)器之心 文 | wengJJ pyecharts是一款將python與echarts結(jié)合的強(qiáng)大的數(shù)據(jù)可視化工具,本文將為你闡述pyecharts的使用細(xì)則 前言 我們都知道python上的一款可視化工具matplotlib,而前些陣子做一個(gè)Spark項(xiàng)目的時(shí)候用到了百度開源的一個(gè)可視化JS工具-Echarts,可視化類型非常多,但是得通過導(dǎo)入js庫在Java Web項(xiàng)目上運(yùn)行,平時(shí)用Python比較多,于是就在想有沒有Python與Echarts結(jié)合的輪子。Google后,找到一個(gè)國人開發(fā)的一個(gè)Echarts與Python結(jié)合的輪子:pyecharts,下面就來簡述下pyecharts一些使用細(xì)則: 安裝 寫這篇文章用的是Win環(huán)境,首先打開命令行(win+R),輸入: 
 但筆者實(shí)測時(shí)發(fā)現(xiàn),由于墻的原因,下載時(shí)會(huì)出現(xiàn)斷線和速度過慢的問題導(dǎo)致下載失敗,所以建議通過清華鏡像來進(jìn)行下載: 
 出現(xiàn)上方的信息,即代表下載成功,我們可以來進(jìn)行下一步的實(shí)驗(yàn)了! 使用實(shí)例 使用之前我們要強(qiáng)調(diào)一點(diǎn):就是python2.x和python3.x的編碼問題,在python3.x中你可以把它看做默認(rèn)是unicode編碼,但在python2.x中并不是默認(rèn)的,原因就在它的bytes對(duì)象定義的混亂,而pycharts是使用unicode編碼來處理字符串和文件的,所以當(dāng)你使用的是python2.x時(shí),請(qǐng)務(wù)必在上方插入此代碼: from __future__ import unicode_literals 現(xiàn)在我們來開始正式使用pycharts,這里我們直接使用官方的數(shù)據(jù): 柱狀圖-Bar//導(dǎo)入柱狀圖-Barfrom pyecharts import Bar//設(shè)置行名columns = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']//設(shè)置數(shù)據(jù)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]//設(shè)置柱狀圖的主標(biāo)題與副標(biāo)題bar = Bar('柱狀圖', '一年的降水量與蒸發(fā)量')//添加柱狀圖的數(shù)據(jù)及配置項(xiàng)bar.add('降水量', columns, data1, mark_line=['average'], mark_point=['max', 'min'])bar.add('蒸發(fā)量', columns, data2, mark_line=['average'], mark_point=['max', 'min'])//生成本地文件(默認(rèn)為.html文件)bar.render() 運(yùn)行結(jié)果如下: 簡單的幾行代碼就可以將數(shù)據(jù)進(jìn)行非常好看的可視化,而且還是動(dòng)態(tài)的,在這里還是要安利一下jupyter,pyecharts在v0.1.9.2版本開始,在jupyter上直接調(diào)用實(shí)例(例如上方直接調(diào)用bar)就可以將圖表直接表示出來,非常方便。 筆者數(shù)了數(shù),目前pyecharts上的圖表大概支持到二十多種,接下來,我們?cè)儆蒙戏降臄?shù)據(jù)來生成幾個(gè)數(shù)據(jù)挖掘常用的圖表示例: 餅圖-Pie //導(dǎo)入餅圖Piefrom pyecharts import Pie//設(shè)置主標(biāo)題與副標(biāo)題,標(biāo)題設(shè)置居中,設(shè)置寬度為900pie = Pie('餅狀圖', '一年的降水量與蒸發(fā)量',title_pos='center',width=900)//加入數(shù)據(jù),設(shè)置坐標(biāo)位置為【25,50】,上方的colums選項(xiàng)取消顯示pie.add('降水量', columns, data1 ,center=[25,50],is_legend_show=False)//加入數(shù)據(jù),設(shè)置坐標(biāo)位置為【75,50】,上方的colums選項(xiàng)取消顯示,顯示label標(biāo)簽pie.add('蒸發(fā)量', columns, data2 ,center=[75,50],is_legend_show=False,is_label_show=True)//保存圖表pie.render() 箱體圖-Boxplot//導(dǎo)入箱型圖Boxplotfrom pyecharts import Boxplot boxplot = Boxplot('箱形圖', '一年的降水量與蒸發(fā)量')x_axis = ['降水量','蒸發(fā)量']y_axis = [data1,data2]//prepare_data方法可以將數(shù)據(jù)轉(zhuǎn)為嵌套的 [min, Q1, median (or Q2), Q3, max]yaxis = boxplot.prepare_data(y_axis) boxplot.add('天氣統(tǒng)計(jì)', x_axis, _yaxis)boxplot.render() 折線圖-Linefrom pyecharts import Lineline = Line('折線圖','一年的降水量與蒸發(fā)量')//is_label_show是設(shè)置上方數(shù)據(jù)是否顯示line.add('降水量', columns, data1, is_label_show=True)line.add('蒸發(fā)量', columns, data2, is_label_show=True)line.render() 雷達(dá)圖-Raderfrom pyecharts import Radarradar = Radar('雷達(dá)圖', '一年的降水量與蒸發(fā)量')//由于雷達(dá)圖傳入的數(shù)據(jù)得為多維數(shù)據(jù),所以這里需要做一下處理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]]//設(shè)置column的最大值,為了雷達(dá)圖更為直觀,這里的月份最大值設(shè)置有所不同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)]//傳入坐標(biāo)radar.config(schema)radar.add('降水量',radar_data1)//一般默認(rèn)為同一種顏色,這里為了便于區(qū)分,需要設(shè)置item的顏色radar.add('蒸發(fā)量',radar_data2,item_color='#1C86EE')radar.render() 散點(diǎn)圖-scatterfrom pyecharts import Scatterscatter = Scatter('散點(diǎn)圖', '一年的降水量與蒸發(fā)量')//xais_name是設(shè)置橫坐標(biāo)名稱,這里由于顯示問題,還需要將y軸名稱與y軸的距離進(jìn)行設(shè)置scatter.add('降水量與蒸發(fā)量的散點(diǎn)分布', data1,data2,xaxis_name='降水量',yaxis_name='蒸發(fā)量', yaxis_name_gap=40)scatter.render() 圖表布局 Grid 由于標(biāo)題與圖表是屬于兩個(gè)不同的控件,所以這里必須對(duì)下方的圖表Line進(jìn)行標(biāo)題位置設(shè)置,否則會(huì)出現(xiàn)標(biāo)題重疊的bug。 from pyecharts import Grid//設(shè)置折線圖標(biāo)題位置line = Line('折線圖','一年的降水量與蒸發(fā)量',title_top='45%')line.add('降水量', columns, data1, is_label_show=True)line.add('蒸發(fā)量', columns, data2, is_label_show=True)grid = Grid()//設(shè)置兩個(gè)圖表的相對(duì)位置grid.add(bar, grid_bottom='60%')grid.add(line, grid_top='60%')grid.render() from pyecharts import Overlapoverlap = Overlap()bar = Bar('柱狀圖-折線圖合并', '一年的降水量與蒸發(fā)量')bar.add('降水量', columns, data1, mark_point=['max', 'min'])bar.add('蒸發(fā)量', columns, data2, mark_point=['max', 'min'])overlap.add(bar)overlap.add(line)overlap.render() 總結(jié) 
 pyecharts還有許多好玩的3D圖表和地圖圖表,個(gè)人覺得地圖圖表是最好玩的,各位有興趣可以去pyecharts的使用手冊(cè)查看,有中文版的非常方便:pyecharts | 
|  |