Python數據可視化工具pyecharts使用細則

姓名:劉成龍 ?學號:16020199016

轉載自:https://www.jiqizhixin.com/articles/2018-08-16-6,有刪節。

【嵌牛導讀】:Python數據可視化工具pyecharts使用細則

【嵌牛鼻子】:pyecharts

【嵌牛提問】:你會用pyecharts嗎?

【嵌牛正文】:

前言

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

安裝

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

pip install pyecharts

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

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

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

使用實例

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

from __future__ import unicode_literals

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

柱狀圖-Bar

//導入柱狀圖-Bar

from 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

//導入餅圖Pie

from pyecharts import Pie

//設置主標題與副標題,標題設置居中,設置寬度為900

pie = 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

//導入箱型圖Boxplot

from 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 Line

line = 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 Radar

radar = 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 Scatter

scatter = 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()

兩圖結合 Overlap

from pyecharts import Overlap

overlap = 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()方法來進行圖表保存

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370