學會這個炫酷圖表利器pyecharts,還怕不被公司重用?
首先我們需要安裝下pyecharts,通過pip指令直接安裝即可。
pip install pyecharts
安裝完成后, 可通過pip list指令查看python安裝的庫列表。查看pyecharts安裝版本和是否安裝成功。
老規矩,為了故事的順利發展,我們可以先導入本文所需的模塊。
from pyecharts.charts import Barfrom pyecharts.charts import Piefrom pyecharts.charts import Linefrom pyecharts import options as optsfrom pyecharts.charts import EffectScatterfrom pyecharts.globals import SymbolTypefrom pyecharts.charts import Gridfrom pyecharts.charts import WordCloudfrom pyecharts.charts import Mapimport random
注:以下圖表生成都是在在 Jupyter Notebook 環境中實現。
三、柱狀圖平時我們看到最多的就是柱狀圖了,pyecharts 生成柱狀圖也是非常簡單。直接填入 x 軸和 y 軸的數據就行。
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運行程序后,就會得到如下所示柱狀圖:
當然pyecharts還支持鏈式調用,實現的功能一致,代碼如下:
bar = ( Bar() .add_xaxis(x) .add_yaxis(’china’, data_china) .set_global_opts(title_opts=opts.TitleOpts(title='Bar - 降水示例')))bar.render_notebook()
此外,還可以在一個柱狀圖中添加多個 y 軸記錄,實現多個柱狀對比,只需調用多一次 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()
有時候,柱狀圖太高不方便看,我們還可以將 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 - 翻轉 XY 軸')))bar.render_notebook()
餅狀圖也是使用頻率很高的圖表之一,尤其是適用于百分比類的圖,可以很直觀的看出來各個類別所占據總體份額的比例。
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()
圓環餅狀圖
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} (55xblbr%)'), label_opts=opts.LabelOpts(formatter=': {c}') ))pie.render_notebook()
折線圖通常是來展示數據在不同時間段的走勢,例如比較經典的股市 K 線圖就是折線圖的一種。
line = ( Line() .add_xaxis(x) .add_yaxis(’china’, data_china) .set_global_opts(title_opts=opts.TitleOpts(title='折線圖示例')))line.render_notebook()
同樣,和柱狀圖類似,折線圖也可以在一個圖中添加多個 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()
當然了還有階梯折線圖,同樣可以實現。
line = ( Line() .add_xaxis(x) .add_yaxis(’china’, data_china, is_step=True) .set_global_opts(title_opts=opts.TitleOpts(title='階梯折線圖')))line.render_notebook()
scatter = ( EffectScatter() .add_xaxis(x) .add_yaxis('', data_china) .set_global_opts(title_opts=opts.TitleOpts(title='散點圖示例')))scatter.render_notebook()
數據對比不是很清晰,我們可以給散點圖加上網格,使各個點對應的 y 軸數據更清晰可見。
scatter = ( EffectScatter() .add_xaxis(x) .add_yaxis('china', data_china, symbol=SymbolType.ARROW) .set_global_opts(title_opts=opts.TitleOpts(title='散點圖-分割線'),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()
我們還可以指定點的形狀,還可以在一個散點圖上加多個 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='分割線-散點圖'),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()
有時候,我們還要把多種圖放在一張圖上來集中顯示,pyechars 也想到了?;静襟E就是先單獨生成各自類別的圖,然后用 Grid 將二者合并起來即可。
比如我們想將柱狀圖和折線圖放在一起,那就先分別生成 Bar 和 Line,然后將二者合并即可。
from pyecharts.charts import Gridbar = ( 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('蒸發量', [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 對詞云同樣也是可以的,中文也完全沒問題,不會出現亂碼。
import pyecharts.options as optsfrom pyecharts.charts import WordClouddata = [('生活資源', '999'),('供熱管理', '888'),('供氣質量', '777'),('生活用水管理', '688'),('一次供水問題', '588'),('交通運輸', '516'),('城市交通', '515'),('環境保護', '483'),('房地產管理', '462'),('城鄉建設', '449'),('社會保障與福利', '429'),('社會保障', '407'),('文體與教育管理', '406'),('公共安全', '406'),('公交運輸管理', '386'),('出租車運營管理', '385'),('供熱管理', '375'),('市容環衛', '355'),('自然資源管理', '355'),('粉塵污染', '335'),('噪聲污染', '324'),('土地資源管理', '304'),('物業服務與管理', '304'),('醫療衛生', '284'),('粉煤灰污染', '284'),('占道', '284'),('供熱發展', '254'),('農村土地規劃管理', '254'),('生活噪音', '253'),('供熱單位影響', '253'),('城市供電', '223'),('房屋質量與安全', '223'),('大氣污染', '223'),('房屋安全', '223'),('文化活動', '223'),('拆遷管理', '223'),('公共設施', '223'),('供氣質量', '223'),('供電管理', '223'),('燃氣管理', '152'),('教育管理', '152'),('醫療糾紛', '152'),('執法監督', '152'),('設備安全', '152'),('政務建設', '152'),('縣區、開發區', '152'),('宏觀經濟', '152'),('教育管理', '112'),('社會保障', '112'),('生活用水管理', '112'),('物業服務與管理', '112'),('分類列表', '112'),('農業生產', '112'),('二次供水問題', '112'),('城市公共設施', '92'),('拆遷政策咨詢', '92'),('物業服務', '92'),('物業管理', '92'),('社會保障保險管理', '92'),('低保管理', '92'),('文娛市場管理', '72'),('城市交通秩序管理', '72'),('執法爭議', '72'),('商業煙塵污染', '72'),('占道堆放', '71'),('地上設施', '71'),('水質', '71'),('無水', '71'),('供熱單位影響', '71'),('人行道管理', '71'),('主網原因', '71'),('集中供熱', '71'),('客運管理', '71'),('國有公交(大巴)管理', '71'),('工業粉塵污染', '71'),('治安案件', '71'),('壓力容器安全', '71'),('身份證管理', '71'),('群眾健身', '41'),('工業排放污染', '41'),('破壞森林資源', '41'),('市場收費', '41'),('生產資金', '41'),('生產噪聲', '41'),('農村低保', '41'),('勞動爭議', '41'),('勞動合同爭議', '41'),('勞動報酬與福利', '41'),('醫療事故', '21'),('停供', '21'),('基礎教育', '21'),('職業教育', '21'),('物業資質管理', '21'),('拆遷補償', '21'),('設施維護', '21'),('市場外溢', '11'),('占道經營', '11'),('樹木管理', '11'),('農村基礎設施', '11'),('無水', '11'),('供氣質量', '11'),('停氣', '11'),('市政府工作部門(含部門管理機構、直屬單位)', '11'),('燃氣管理', '11'),('市容環衛', '11'),('新聞傳媒', '11'),('人才招聘', '11'),('市場環境', '11'),('行政事業收費', '11'),('食品安全與衛生', '11'),('城市交通', '11'),('房地產開發', '11'),('房屋配套問題', '11'),('物業服務', '11'),('物業管理', '11'),('占道', '11'),('園林綠化', '11'),('戶籍管理及身份證', '11'),('公交運輸管理', '11'),('公路(水路)交通', '11'),('房屋與圖紙不符', '11'),('有線電視', '11'),('社會治安', '11'),('林業資源', '11'),('其他行政事業收費', '11'),('經營性收費', '11'),('食品安全與衛生', '11'),('體育活動', '11'),('有線電視安裝及調試維護', '11'),('低保管理', '11'),('勞動爭議', '11'),('社會福利及事務', '11'),('一次供水問題', '11'),]wordCloud = ( WordCloud() .add(series_name='熱點分析', data_pair=data, word_size_range=[6, 66]) .set_global_opts(title_opts=opts.TitleOpts( , title_textstyle_opts=opts.TextStyleOpts(font_size=23)),tooltip_opts=opts.TooltipOpts(is_show=True), ))
有時我們會希望將數據展示在地圖上,比如全國疫情狀況,全國各省份人口數據,微信好友各省份分布等。
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()
今天我們通過 pyecharts 繪制了幾種常用圖表,當然繪制圖表都有固定的套路流程。
生成圖表大致可分為三個步驟,準備相關數據、利用鏈式調用法設置數據和相關配置、調用 render_notebook() 或者 render() 函數生成圖表。
到此這篇關于學會這個炫酷圖表利器pyecharts,還怕不被公司重用?的文章就介紹到這了,更多相關python pyecharts內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!