學(xué)會這個(gè)炫酷圖表利器pyecharts,還怕不被公司重用?
一、安裝
首先我們需要安裝下pyecharts,通過pip指令直接安裝即可。
pip install pyecharts
安裝完成后, 可通過pip list指令查看python安裝的庫列表。查看pyecharts安裝版本和是否安裝成功。
二、導(dǎo)入模塊
老規(guī)矩,為了故事的順利發(fā)展,我們可以先導(dǎo)入本文所需的模塊。
from pyecharts.charts import Bar from pyecharts.charts import Pie from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.charts import EffectScatter from pyecharts.globals import SymbolType from pyecharts.charts import Grid from pyecharts.charts import WordCloud from pyecharts.charts import Map import random
注:以下圖表生成都是在在 Jupyter Notebook 環(huán)境中實(shí)現(xiàn)。
三、柱狀圖
平時(shí)我們看到最多的就是柱狀圖了,pyecharts 生成柱狀圖也是非常簡單。直接填入 x 軸和 y 軸的數(shù)據(jù)就行。
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] data_china = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] data_russia = [1.6, 5.4, 9.3, 28.4, 22.7, 60.7, 162.6, 199.2, 56.7, 43.8, 3.0, 4.9] bar = Bar() bar.add_xaxis(x) bar.add_yaxis("降水量", data_china) bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 降水示例")) bar.rerender_notebook()
run運(yùn)行程序后,就會得到如下所示柱狀圖:
當(dāng)然pyecharts還支持鏈?zhǔn)秸{(diào)用,實(shí)現(xiàn)的功能一致,代碼如下:
bar = ( Bar() .add_xaxis(x) .add_yaxis('china', data_china) .set_global_opts(title_opts=opts.TitleOpts(title="Bar - 降水示例")) ) bar.render_notebook()
此外,還可以在一個(gè)柱狀圖中添加多個(gè) y 軸記錄,實(shí)現(xiàn)多個(gè)柱狀對比,只需調(diào)用多一次 add_yaxis 即可。
bar = ( Bar() .add_xaxis(x) .add_yaxis('china', data_china) .add_yaxis("sussia", data_russia) .set_global_opts(title_opts=opts.TitleOpts(title="Bar - 多柱狀圖")) ) bar.render_notebook()
有時(shí)候,柱狀圖太高不方便看,我們還可以將 x 軸和 y 軸互換,生成橫向的柱狀圖。多柱狀圖和 xy 軸互換不沖突,可疊加使用。
bar = ( Bar() .add_xaxis(x) .add_yaxis('china', data_china) .add_yaxis('russia', data_russia) .reversal_axis() .set_series_opts(label_opts=opts.LabelOpts(position="right")) .set_global_opts(title_opts=opts.TitleOpts(title="Bar - 翻轉(zhuǎn) XY 軸")) ) bar.render_notebook()
四、餅狀圖
餅狀圖也是使用頻率很高的圖表之一,尤其是適用于百分比類的圖,可以很直觀的看出來各個(gè)類別所占據(jù)總體份額的比例。
pie = ( Pie() .add("", [list(z) for z in zip(x, data_china)]) .set_global_opts(title_opts=opts.TitleOpts(title="餅圖示例")) .set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}")) ) pie.render_notebook()
圓環(huán)餅狀圖
pie = ( Pie(init_opts=opts.InitOpts(width="600px", height="400px")) .add( series_name="降雨量", data_pair=[list(z) for z in zip(x, data_china)], radius=["50%", "70%"], label_opts=opts.LabelOpts(is_show=False, position="center"), ) .set_global_opts(legend_opts=opts.LegendOpts(pos_left="legft", orient="vertical")) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger="item", formatter="{a} <br/>: {c} (vvxyksv9kd%)" ), label_opts=opts.LabelOpts(formatter=": {c}") ) ) pie.render_notebook()
五、折線圖
折線圖通常是來展示數(shù)據(jù)在不同時(shí)間段的走勢,例如比較經(jīng)典的股市 K 線圖就是折線圖的一種。
line = ( Line() .add_xaxis(x) .add_yaxis('china', data_china) .set_global_opts(title_opts=opts.TitleOpts(title="折線圖示例")) ) line.render_notebook()
同樣,和柱狀圖類似,折線圖也可以在一個(gè)圖中添加多個(gè) y 軸記錄。
line = ( Line() .add_xaxis(x) .add_yaxis('china', data_china) .add_yaxis('russis', data_russia) .set_global_opts(title_opts=opts.TitleOpts(title="雙折線圖")) ) line.render_notebook()
當(dāng)然了還有階梯折線圖,同樣可以實(shí)現(xiàn)。
line = ( Line() .add_xaxis(x) .add_yaxis('china', data_china, is_step=True) .set_global_opts(title_opts=opts.TitleOpts(title="階梯折線圖")) ) line.render_notebook()
六、散點(diǎn)圖
scatter = ( EffectScatter() .add_xaxis(x) .add_yaxis("", data_china) .set_global_opts(title_opts=opts.TitleOpts(title="散點(diǎn)圖示例")) ) scatter.render_notebook()
數(shù)據(jù)對比不是很清晰,我們可以給散點(diǎn)圖加上網(wǎng)格,使各個(gè)點(diǎn)對應(yīng)的 y 軸數(shù)據(jù)更清晰可見。
scatter = ( EffectScatter() .add_xaxis(x) .add_yaxis("china", data_china, symbol=SymbolType.ARROW) .set_global_opts( title_opts=opts.TitleOpts(title="散點(diǎn)圖-分割線"), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), ) ) scatter.render_notebook()
我們還可以指定點(diǎn)的形狀,還可以在一個(gè)散點(diǎn)圖上加多個(gè) y 軸記錄。這些配置就像積木一樣,隨意堆疊。
scatter = ( EffectScatter() .add_xaxis(x) .add_yaxis("china", [x + 30 for x in data_russia],symbol=SymbolType.ARROW) .add_yaxis("russia", data_russia, symbol=SymbolType.TRIANGLE) .set_global_opts( title_opts=opts.TitleOpts(title="分割線-散點(diǎn)圖"), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), ) ) scatter.render_notebook()
七、圖表合并
有時(shí)候,我們還要把多種圖放在一張圖上來集中顯示,pyechars 也想到了?;静襟E就是先單獨(dú)生成各自類別的圖,然后用 Grid 將二者合并起來即可。
比如我們想將柱狀圖和折線圖放在一起,那就先分別生成 Bar 和 Line,然后將二者合并即可。
from pyecharts.charts import Grid bar = ( Bar() .add_xaxis(x) .add_yaxis('china', data_china) .add_yaxis("sussia", data_russia) .set_global_opts( title_opts=opts.TitleOpts(title="多圖合并"), ) ) line = ( Line() .add_xaxis(x) .add_yaxis("蒸發(fā)量", [x + 50 for x in data_china] ) ) bar.overlap(line) grid = Grid() grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="5%"), is_control_axis_index=True) grid.render_notebook()
八、詞云
pyechars 對詞云同樣也是可以的,中文也完全沒問題,不會出現(xiàn)亂碼。
import pyecharts.options as opts from pyecharts.charts import WordCloud data = [("生活資源", "999"),("供熱管理", "888"),("供氣質(zhì)量", "777"),("生活用水管理", "688"),("一次供水問題", "588"),("交通運(yùn)輸", "516"),("城市交通", "515"),("環(huán)境保護(hù)", "483"),("房地產(chǎn)管理", "462"),("城鄉(xiāng)建設(shè)", "449"),("社會保障與福利", "429"),("社會保障", "407"),("文體與教育管理", "406"),("公共安全", "406"),("公交運(yùn)輸管理", "386"),("出租車運(yùn)營管理", "385"),("供熱管理", "375"),("市容環(huán)衛(wèi)", "355"),("自然資源管理", "355"),("粉塵污染", "335"),("噪聲污染", "324"),("土地資源管理", "304"),("物業(yè)服務(wù)與管理", "304"),("醫(yī)療衛(wèi)生", "284"),("粉煤灰污染", "284"),("占道", "284"),("供熱發(fā)展", "254"),("農(nóng)村土地規(guī)劃管理", "254"),("生活噪音", "253"),("供熱單位影響", "253"),("城市供電", "223"),("房屋質(zhì)量與安全", "223"),("大氣污染", "223"),("房屋安全", "223"),("文化活動", "223"),("拆遷管理", "223"),("公共設(shè)施", "223"),("供氣質(zhì)量", "223"),("供電管理", "223"),("燃?xì)夤芾?, "152"),("教育管理", "152"),("醫(yī)療糾紛", "152"),("執(zhí)法監(jiān)督", "152"),("設(shè)備安全", "152"),("政務(wù)建設(shè)", "152"),("縣區(qū)、開發(fā)區(qū)", "152"),("宏觀經(jīng)濟(jì)", "152"),("教育管理", "112"),("社會保障", "112"),("生活用水管理", "112"),("物業(yè)服務(wù)與管理", "112"),("分類列表", "112"),("農(nóng)業(yè)生產(chǎn)", "112"),("二次供水問題", "112"),("城市公共設(shè)施", "92"),("拆遷政策咨詢", "92"),("物業(yè)服務(wù)", "92"),("物業(yè)管理", "92"),("社會保障保險(xiǎn)管理", "92"),("低保管理", "92"),("文娛市場管理", "72"),("城市交通秩序管理", "72"),("執(zhí)法爭議", "72"),("商業(yè)煙塵污染", "72"),("占道堆放", "71"),("地上設(shè)施", "71"),("水質(zhì)", "71"),("無水", "71"),("供熱單位影響", "71"),("人行道管理", "71"),("主網(wǎng)原因", "71"),("集中供熱", "71"),("客運(yùn)管理", "71"),("國有公交(大巴)管理", "71"),("工業(yè)粉塵污染", "71"),("治安案件", "71"),("壓力容器安全", "71"),("身份證管理", "71"),("群眾健身", "41"),("工業(yè)排放污染", "41"),("破壞森林資源", "41"),("市場收費(fèi)", "41"),("生產(chǎn)資金", "41"),("生產(chǎn)噪聲", "41"),("農(nóng)村低保", "41"),("勞動爭議", "41"),("勞動合同爭議", "41"),("勞動報(bào)酬與福利", "41"),("醫(yī)療事故", "21"),("停供", "21"),("基礎(chǔ)教育", "21"),("職業(yè)教育", "21"),("物業(yè)資質(zhì)管理", "21"),("拆遷補(bǔ)償", "21"),("設(shè)施維護(hù)", "21"),("市場外溢", "11"),("占道經(jīng)營", "11"),("樹木管理", "11"),("農(nóng)村基礎(chǔ)設(shè)施", "11"),("無水", "11"),("供氣質(zhì)量", "11"),("停氣", "11"),("市政府工作部門(含部門管理機(jī)構(gòu)、直屬單位)", "11"),("燃?xì)夤芾?, "11"),("市容環(huán)衛(wèi)", "11"),("新聞傳媒", "11"),("人才招聘", "11"),("市場環(huán)境", "11"),("行政事業(yè)收費(fèi)", "11"),("食品安全與衛(wèi)生", "11"),("城市交通", "11"),("房地產(chǎn)開發(fā)", "11"),("房屋配套問題", "11"),("物業(yè)服務(wù)", "11"),("物業(yè)管理", "11"),("占道", "11"),("園林綠化", "11"),("戶籍管理及身份證", "11"),("公交運(yùn)輸管理", "11"),("公路(水路)交通", "11"),("房屋與圖紙不符", "11"),("有線電視", "11"),("社會治安", "11"),("林業(yè)資源", "11"),("其他行政事業(yè)收費(fèi)", "11"),("經(jīng)營性收費(fèi)", "11"),("食品安全與衛(wèi)生", "11"),("體育活動", "11"),("有線電視安裝及調(diào)試維護(hù)", "11"),("低保管理", "11"),("勞動爭議", "11"),("社會福利及事務(wù)", "11"),("一次供水問題", "11"),] wordCloud = ( WordCloud() .add(series_name="熱點(diǎn)分析", data_pair=data, word_size_range=[6, 66]) .set_global_opts( title_opts=opts.TitleOpts( title="熱點(diǎn)分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23) ), tooltip_opts=opts.TooltipOpts(is_show=True), ) )
九、地圖
有時(shí)我們會希望將數(shù)據(jù)展示在地圖上,比如全國疫情狀況,全國各省份人口數(shù)據(jù),微信好友各省份分布等。
provinces = ['廣東', '北京', '上海', '湖南', '重慶', '新疆', '河南', '黑龍江', '浙江', '臺灣'] values = [random.randint(1, 1024) for x in range(len(provinces))] map = ( Map() .add("", [list(z) for z in zip(provinces, values)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="中國地圖示例"), visualmap_opts=opts.VisualMapOpts(max_=1024, is_piecewise=True), ) ) map.render_notebook()
十、總結(jié)
今天我們通過 pyecharts 繪制了幾種常用圖表,當(dāng)然繪制圖表都有固定的套路流程。
生成圖表大致可分為三個(gè)步驟,準(zhǔn)備相關(guān)數(shù)據(jù)、利用鏈?zhǔn)秸{(diào)用法設(shè)置數(shù)據(jù)和相關(guān)配置、調(diào)用 render_notebook() 或者 render() 函數(shù)生成圖表。
到此這篇關(guān)于學(xué)會這個(gè)炫酷圖表利器pyecharts,還怕不被公司重用?的文章就介紹到這了,更多相關(guān)python pyecharts內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python用pyecharts實(shí)現(xiàn)地圖數(shù)據(jù)可視化
- Python繪制K線圖之可視化神器pyecharts的使用
- Python繪制詞云圖之可視化神器pyecharts的方法
- python使用pyecharts庫畫地圖數(shù)據(jù)可視化的實(shí)現(xiàn)
- Python數(shù)據(jù)可視化處理庫PyEcharts柱狀圖,餅圖,線性圖,詞云圖常用實(shí)例詳解
- Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過程詳解
- Python 數(shù)據(jù)可視化pyecharts的使用詳解
相關(guān)文章
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(10):webpy框架
webpy小巧,簡單,實(shí)用,可以快速的完成簡單的web頁面。這里根據(jù)webpy Cookbook簡要的介紹一下webpy框架,需要的朋友可以參考下2014-06-06Pycharm中配置遠(yuǎn)程Docker運(yùn)行環(huán)境的教程圖解
這篇文章主要介紹了Pycharm中配置遠(yuǎn)程Docker運(yùn)行環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Anaconda使用IDLE的實(shí)現(xiàn)示例
這篇文章主要介紹了Anaconda使用IDLE的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)類型
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)類型,在?Python?以及其他所有面向?qū)ο缶幊陶Z言中,類都是對數(shù)據(jù)的構(gòu)成(狀態(tài))以及數(shù)據(jù)?能做什么(行為)的描述,下面我們就來你看看python數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)類型商務(wù)詳細(xì)介紹,需要的小伙伴可以參考一下2021-12-12淺談keras中的后端backend及其相關(guān)函數(shù)(K.prod,K.cast)
這篇文章主要介紹了淺談keras中的后端backend及其相關(guān)函數(shù)(K.prod,K.cast),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06