怎么在Python中使用pyecharts實(shí)現(xiàn)數(shù)據(jù)可視化?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
目前創(chuàng)新互聯(lián)建站已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、合江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。什么是pyecharts?
pyecharts 是一個(gè)用于生成 Echarts 圖表的類庫(kù)。
echarts是百度開源的一個(gè)數(shù)據(jù)可視化 JS 庫(kù),主要用于數(shù)據(jù)可視化。pyecharts 是一個(gè)用于生成 Echarts 圖表的類庫(kù)。實(shí)際上就是 Echarts 與 Python 的對(duì)接。
使用 pyecharts可以生成獨(dú)立的網(wǎng)頁(yè),也可以在 flask , Django中集成使用。
pyecharts包含的圖表
Bar(柱狀圖/條形圖)
Bar3D(3D 柱狀圖)
Boxplot(箱形圖)
EffectScatter(帶有漣漪特效動(dòng)畫的散點(diǎn)圖)
Funnel(漏斗圖)
Gauge(儀表盤)
Geo(地理坐標(biāo)系)
Graph(關(guān)系圖)
HeatMap(熱力圖)
Kline(K線圖)
Line(折線/面積圖)
Line3D(3D 折線圖)
Liquid(水球圖)
Map(地圖)
Parallel(平行坐標(biāo)系)
Pie(餅圖)
Polar(極坐標(biāo)系)
Radar(雷達(dá)圖)
Sankey(?;鶊D)
Scatter(散點(diǎn)圖)
Scatter3D(3D 散點(diǎn)圖)
ThemeRiver(主題河流圖)
WordCloud(詞云圖)
用戶自定義
Grid 類:并行顯示多張圖
Overlap 類:結(jié)合不同類型圖表疊加畫在同張圖上
Page 類:同一網(wǎng)頁(yè)按順序展示多圖
Timeline 類:提供時(shí)間線輪播多張圖
pyecharts安裝
pip install pyecharts
這里要專門說(shuō)明一下,自從 0.3.2 開始,為了縮減項(xiàng)目本身的體積以及維持 pyecharts 項(xiàng)目的輕量化運(yùn)行,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表(Geo、Map),可自行安裝對(duì)應(yīng)的地圖文件包。
否則在用到這兩個(gè)包的時(shí)候,并能完整的顯示地圖效果。
全球國(guó)家地圖:echarts-countries-pypkg(1.9MB): 世界地圖和 213 個(gè)國(guó)家,包括中國(guó)地圖
中國(guó)省級(jí)地圖:echarts-china-provinces-pypkg(730KB):23 個(gè)省,5 個(gè)自治區(qū)
中國(guó)市級(jí)地圖:echarts-china-cities-pypkg(3.8MB):370 個(gè)中國(guó)城市
Windows下通過(guò)已下的pip命令進(jìn)行安裝
pip install echarts-countries-pypkg pip install echarts-china-provinces-pypkg pip install echarts-china-cities-pypkg
Linux下通過(guò)以下的pip命令進(jìn)行安裝
sudo pip3 install echarts-countries-pypkg sudo pip3 install echarts-china-provinces-pypkg sudo pip3 install echarts-china-cities-pypkg sudo pip3 install echarts-countries-pypkg sudo pip3 install echarts-china-provinces-pypkg sudo pip3 install echarts-china-cities-pypkg
相關(guān)函數(shù)、參數(shù)說(shuō)明
先介紹一些可能會(huì)用到的基本函數(shù):
add() 主要方法,用于添加圖表的數(shù)據(jù)和設(shè)置各種配置項(xiàng)
show_config() 打印輸出圖表的所有配置項(xiàng)
render() 默認(rèn)將會(huì)在根目錄下生成一個(gè) render.html 的文件,支持 path 參數(shù),設(shè)置文件保存位置,如 render(r"e:my_first_chart.html"),文件用瀏覽器打開。
默認(rèn)的編碼類型為 UTF-8,在 Python3 中是沒(méi)什么問(wèn)題的,Python3 對(duì)中文的支持好很多。但是在 Python2 中,編碼的處理是個(gè)很頭疼的問(wèn)題,暫時(shí)沒(méi)能找到完美的解決方法,目前只能通過(guò)文本編輯器自己進(jìn)行二次編碼,我用的是 Visual Studio Code,先通過(guò) Gbk 編碼重新打開,然后再用 UTF-8 重新保存,這樣用瀏覽器打開的話就不會(huì)出現(xiàn)中文亂碼問(wèn)題了。(這里是某位大佬遇到的問(wèn)題,我直接復(fù)制過(guò)來(lái)了,供大家參考)
基本上所有的圖表類型都是這樣繪制的:
chart_name = Type() 初始化具體類型圖表。
add() 加數(shù)據(jù)及配置項(xiàng)。
render() 生成 .html 文件。
基本圖表使用實(shí)例
Bar(柱狀圖/條形圖)
from pyecharts import Bar bar =Bar("我的第一個(gè)圖表", "這里是副標(biāo)題") bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], [5, 20, 36, 10, 75, 90]) bar.show_config() bar.render()
from pyecharts import Bar bar =Bar("x 軸和 y 軸交換") bar.add("商家A", attr, v1) bar.add("商家B", attr, v2, is_convert=True) bar.render()
說(shuō)明:如下代碼,atf_tb1屬性是并不會(huì)顯示在圖表中的
bar = Bar() bar.add('格式化',["atf_tb1","shop"],[10,50]) bar.add("范圍", ["shop"], [120]) bar.render()
可以看到atf_tb1并沒(méi)有加載到圖表中,說(shuō)明并不支持這么使用
Pie(餅圖)
from pyecharts import Pie attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[11, 12, 13, 10, 10, 10] pie =Pie("餅圖示例") pie.add("", attr, v1, is_label_show=True) pie.show_config() pie.render()
WordCloud(詞云圖)
from pyecharts import WordCloud name =['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break'] value =[10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265] wordcloud =WordCloud(width=1300, height=620) wordcloud.add("", name, value, word_size_range=[20, 100]) wordcloud.show_config() wordcloud.render()
詞云圖的形狀可以通過(guò)shape參數(shù)來(lái)選擇
wordcloud =WordCloud(width=1300, height=620) wordcloud.add("", name, value, word_size_range=[30, 100], shape='diamond') wordcloud.show_config() wordcloud.render()
Geo(地理坐標(biāo)系)
from pyecharts import Geo data =[("海門", 9), ("鄂爾多斯", 12), ("招遠(yuǎn)", 12), ("舟山", 12), ("齊齊哈爾", 14), ("鹽城", 15)] geo =Geo("全國(guó)主要城市空氣質(zhì)量", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59') attr, value =geo.cast(data) geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5) geo.show_config() geo.render()
這里也要先說(shuō)明一點(diǎn)因?yàn)閑charts里面有的地點(diǎn)可能沒(méi)有,一旦添加了沒(méi)有的在這里面,將會(huì)生成一個(gè)空的圖。
有四個(gè)解決辦法:
一是最簡(jiǎn)單的把不存在刪掉;
二是到百度地圖api里把找不到的地方的經(jīng)緯度加進(jìn)原始的包里(這個(gè)辦法大家可以參看這位大佬的博客https://www.jb51.net/article/163958.htm);
三是如果你的數(shù)據(jù)在地圖中并沒(méi)有坐標(biāo)城市,可以通過(guò)geo_cities_coords 自己進(jìn)行添加,GeoLine圖同樣如此
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: jyroy from pyecharts import Geo if __name__ == '__main__': list_city_name=["100,30-1","130,40-2"] list_num = [["value1","value2"],["value3"]] geo_cities_coords = {"100,30-1":[100,30],"130,40-2":[130,40]} geo = Geo("Geo 實(shí)例") geo.add("",list_city_name, list_num, geo_cities_coords=geo_cities_coords) geo.render()
四是如果你是批量的導(dǎo)入導(dǎo)入數(shù)據(jù)(類似從數(shù)據(jù)庫(kù)中),異常數(shù)據(jù)并不想插入到地圖中去,可以通過(guò)try...except...來(lái)清除這少部分的異常數(shù)據(jù),如下代碼,這是我自己遇到的問(wèn)題的想到的一個(gè)解決辦法,data是我從數(shù)據(jù)庫(kù)中得到的字典
當(dāng)然如果數(shù)據(jù)量比較大的話,這樣做效率可能不高,給大家一個(gè)參考吧
for n, m in data.items(): #data是我從數(shù)據(jù)庫(kù)中讀取的城市的字典數(shù)據(jù) list_1 = [] list_2 = [] list_1.append(n) list_2.append(m) try: geo.add("", list_1, list_2, visual_range=[0, 3000], visual_text_color="#fff", symbol_size=15, is_visualmap=True) except Exception as e: pass
當(dāng)然如果數(shù)據(jù)量比較大的話,這樣做效率可能不高,給大家一個(gè)參考吧這是我的項(xiàng)目里一部分的數(shù)據(jù)得到的結(jié)果,我拿了7萬(wàn)多條數(shù)據(jù)來(lái)做的測(cè)試,感覺效果還ok
Line(折線/面積圖)
from pyecharts import Line attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[5, 20, 36, 10, 10, 100]v2 =[55, 60, 16, 20, 15, 80] line =Line("折線圖示例") line.add("商家A", attr, v1, mark_point=["average"]) line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"]) line.show_config() line.render()
line =Line("折線圖-面積圖示例") line.add("商家A", attr, v1, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None) line.add("商家B", attr, v2, is_fill=True, area_color='#000', area_opacity=0.3, is_smooth=True) line.show_config() line.render()
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。