Python可视化神器之pyecharts
生活随笔
收集整理的這篇文章主要介紹了
Python可视化神器之pyecharts
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 概述
- 安裝
- 參數
- 實例
概述
Pyecharts是一款將python與echarts結合的強大的數據可視化工具。使用 pyecharts?可以生成獨立的網頁,也可以在 flask , Django?中集成使用。
echarts?是百度開源的一個數據可視化 JS 庫,主要用于數據可視化。pyecharts 是一個用于生成 Echarts 圖表的類庫,實際上就是 Echarts 與 Python 的對接。
pyecharts包含的圖表:
Bar(柱狀圖/條形圖) Bar3D(3D 柱狀圖) Boxplot(箱形圖) EffectScatter(帶有漣漪特效動畫的散點圖) Funnel(漏斗圖) Gauge(儀表盤) Geo(地理坐標系) Graph(關系圖) HeatMap(熱力圖) Kline(K線圖) Line(折線/面積圖) Line3D(3D 折線圖) Liquid(水球圖) Map(地圖) Parallel(平行坐標系) Pie(餅圖) Polar(極坐標系) Radar(雷達圖) Sankey(桑基圖) Scatter(散點圖) Scatter3D(3D 散點圖) ThemeRiver(主題河流圖) WordCloud(詞云圖)用戶自定義的圖表:
Grid 類:并行顯示多張圖 Overlap 類:結合不同類型圖表疊加畫在同張圖上 Page 類:同一網頁按順序展示多圖 Timeline 類:提供時間線輪播多張圖?
安裝
在Win命令行(win+R)輸入pip install pyecharts==0.1.9.4(版本號,分為 v0.5.X 和 v1 兩個大版本,v0.5.X 和 v1 間不兼容)
?
參數
一些可能會用到的基本函數:
- add()? ??主要方法,用于添加圖表的數據和設置各種配置項
- show_config()? ??打印輸出圖表的所有配置項
- render()? ??默認將會在根目錄下生成一個 render.html 的文件,支持 path 參數,設置文件保存位置,如 render(r"e:my_first_chart.html"),文件用瀏覽器打開。
基本上所有的圖表類型都是這樣繪制的:
?
實例
下文主要列舉了如下一些常見的使用實例:
柱狀圖-Bar、餅圖-Pie、折線圖-Line、散點圖-scatter、3D 柱狀圖-Bar3D、儀表盤-Gauge、雷達圖-Radar、詞云圖-WordCloud、地理坐標系-Geo、地圖-Map
柱狀圖-Bar
from pyecharts import Bar import osattr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.8, 48.7, 18.8, 6.0, 2.3] bar = Bar("柱狀圖示例", "一年的降水量與蒸發量") bar.add("蒸發量", attr, v1, mark_line=['average'], mark_point=["max", "min"]) # 畫平均線,標記最大最小值 bar.add("降水量", attr, v2, mark_line=['average'], mark_point=["max", "min"]) bar.render("a.html") os.system("a.html")bar = Bar("x 軸和 y 軸交換", "一年的降水量與蒸發量") # print交換x軸和y軸 bar.add("蒸發量", attr, v1, mark_line=['average'], mark_point=["max", "min"]) bar.add("降水量", attr, v2, mark_line=['average'], mark_point=["max", "min"], is_convert=True) # is_convert是否轉換 bar.render("b.html") os.system("b.html")餅圖-Pie
1.普通餅圖
from pyecharts import Pie import osattr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[11, 12, 13, 10, 10, 10] pie =Pie("餅圖實例1") pie.add("", attr, v1, is_label_show=True) #pie.show_config() pie.render() os.system("render.html")2.南丁格爾玫瑰圖
from pyecharts import Pie import osattr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[11, 12, 13, 10, 10, 10] v2 =[19, 21, 32, 20, 20, 33] pie =Pie("餅圖實例2-玫瑰圖示例", title_pos='center', width=900,title_text_size=40)#title_pos調整標題位置,title_text_size調整主標題文字大小 #center餅圖圓心坐標,is_random是否隨機排列顏色列表(bool),radius兩個半徑分別為內外半徑 #rosetype為是否展示成南丁格爾圖( 'radius' 圓心角展現數據百分比,半徑展現數據大小;'area' 圓心角相同,為通過半徑展現數據大小) pie.add("商品A",attr,v1,center=[25, 50], is_random=True, radius=[30, 75], rosetype='radius') pie.add("商品B",attr,v2,center=[75, 50], is_random=True, radius=[30, 75], rosetype='area', is_legend_show=False, is_label_show=True) #pie.show_config() pie.render() os.system("render.html")3.多圖排列
from pyecharts import Pie import ospie =Pie('餅圖實例3', "各類電影中'好片'所占的比例", title_pos='center') pie.add("", ["劇情", ""], [25, 75], center=[10, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, ) pie.add("", ["奇幻", ""], [24, 76], center=[30, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, legend_pos='left') pie.add("", ["愛情", ""], [14, 86], center=[50, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["驚悚", ""], [11, 89], center=[70, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["冒險", ""], [27, 73], center=[90, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["動作", ""], [15, 85], center=[10, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["喜劇", ""], [54, 46], center=[30, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["科幻", ""], [26, 74], center=[50, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["懸疑", ""], [25, 75], center=[70, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["犯罪", ""], [28, 72], center=[90, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, is_legend_show=True, legend_top="center") #pie.show_config() pie.render() os.system("render.html")折線圖-Line
from pyecharts import Line import osattr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.8, 48.7, 18.8, 6.0, 2.3] line = Line("折線圖","一年的降水量與蒸發量") line.add("降水量", attr, v1, is_label_show=True) line.add("蒸發量", attr, v2, is_label_show=True) line.render() os.system("render.html")散點圖-scatter
from pyecharts import Scatter import osattr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.8, 48.7, 18.8, 6.0, 2.3] scatter = Scatter("散點圖", "一年的降水量與蒸發量") #xais_name是設置橫坐標名稱,這里由于顯示問題,還需要將y軸名稱與y軸的距離進行設置 scatter.add("降水量與蒸發量的散點分布", v1, v2, xaxis_name="降水量",yaxis_name="蒸發量",yaxis_name_gap=40) scatter.render() os.system("render.html")3D 柱狀圖-Bar3D
from pyecharts import Bar3D import osbar3d = Bar3D("3D 柱狀圖示例", width=1200, height=600) x_axis = ["12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a","12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"] y_axis = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"] data = [[0, 0, 5], [0, 1, 1], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 5, 0],[0, 6, 0], [0, 7, 0], [0, 8, 0], [0, 9, 0], [0, 10, 0], [0, 11, 2],[0, 12, 4], [0, 13, 1], [0, 14, 1], [0, 15, 3], [0, 16, 4], [0, 17, 6],[0, 18, 4], [0, 19, 4], [0, 20, 3], [0, 21, 3], [0, 22, 2], [0, 23, 5],[1, 0, 7], [1, 1, 0], [1, 2, 0], [1, 3, 0], [1, 4, 0], [1, 5, 0],[1, 6, 0], [1, 7, 0], [1, 8, 0], [1, 9, 0], [1, 10, 5], [1, 11, 2],[1, 12, 2], [1, 13, 6], [1, 14, 9], [1, 15, 11], [1, 16, 6], [1, 17, 7],[1, 18, 8], [1, 19, 12], [1, 20, 5], [1, 21, 5], [1, 22, 7], [1, 23, 2],[2, 0, 1], [2, 1, 1], [2, 2, 0], [2, 3, 0], [2, 4, 0], [2, 5, 0],[2, 6, 0], [2, 7, 0], [2, 8, 0], [2, 9, 0], [2, 10, 3], [2, 11, 2],[2, 12, 1], [2, 13, 9], [2, 14, 8], [2, 15, 10], [2, 16, 6], [2, 17, 5],[2, 18, 5], [2, 19, 5], [2, 20, 7], [2, 21, 4], [2, 22, 2], [2, 23, 4],[3, 0, 7], [3, 1, 3], [3, 2, 0], [3, 3, 0], [3, 4, 0], [3, 5, 0],[3, 6, 0], [3, 7, 0], [3, 8, 1], [3, 9, 0], [3, 10, 5], [3, 11, 4],[3, 12, 7], [3, 13, 14], [3, 14, 13], [3, 15, 12], [3, 16, 9], [3, 17, 5],[3, 18, 5], [3, 19, 10], [3, 20, 6], [3, 21, 4], [3, 22, 4], [3, 23, 1],[4, 0, 1], [4, 1, 3], [4, 2, 0], [4, 3, 0], [4, 4, 0], [4, 5, 1],[4, 6, 0], [4, 7, 0], [4, 8, 0], [4, 9, 2], [4, 10, 4], [4, 11, 4],[4, 12, 2], [4, 13, 4], [4, 14, 4], [4, 15, 14], [4, 16, 12], [4, 17, 1],[4, 18, 8], [4, 19, 5], [4, 20, 3], [4, 21, 7], [4, 22, 3], [4, 23, 0],[5, 0, 2], [5, 1, 1], [5, 2, 0], [5, 3, 3], [5, 4, 0], [5, 5, 0],[5, 6, 0], [5, 7, 0], [5, 8, 2], [5, 9, 0], [5, 10, 4], [5, 11, 1],[5, 12, 5], [5, 13, 10], [5, 14, 5], [5, 15, 7], [5, 16, 11], [5, 17, 6],[5, 18, 0], [5, 19, 5], [5, 20, 3], [5, 21, 4], [5, 22, 2], [5, 23, 0],[6, 0, 1], [6, 1, 0], [6, 2, 0], [6, 3, 0], [6, 4, 0], [6, 5, 0],[6, 6, 0], [6, 7, 0], [6, 8, 0], [6, 9, 0], [6, 10, 1], [6, 11, 0],[6, 12, 2], [6, 13, 1], [6, 14, 3], [6, 15, 4], [6, 16, 0], [6, 17, 0],[6, 18, 0], [6, 19, 0], [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6]] range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf','#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] bar3d.add("",x_axis,y_axis,[[d[1], d[0], d[2]] for d in data],is_visualmap=True,visual_range=[0, 20],visual_range_color=range_color,grid3d_width=200,grid3d_depth=80, ) bar3d.render() os.system("render.html")儀表盤-Gauge
from pyecharts import Gauge import osgauge = Gauge("儀表盤示例") gauge.add("業務指標", "完成率", 66.66) #a=input("輸入路徑:") #gauge.render(a) #os.system(a) gauge.render() os.system("render.html")雷達圖-Radar
from pyecharts import Radar import osradar = Radar("雷達圖", "一年的降水量與蒸發量") #由于雷達圖傳入的數據得為多維數據,所以這里需要做一下處理 radar_v1 = [[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_v2 = [[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_v1) #一般默認為同一種顏色,這里為了便于區分,需要設置item的顏色 radar.add("蒸發量",radar_v2,item_color="#1C86EE") radar.render() os.system("render.html")詞云圖-WordCloud
from pyecharts import WordCloud import osname =['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], shape='diamond')#shape詞云圖輪廓,有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可選 wordcloud.show_config() wordcloud.render() os.system("render.html")地理坐標系-Geo
from pyecharts import Geo import os data = [("海門", 9),("鄂爾多斯", 12),("招遠", 12),("舟山", 12),("齊齊哈爾", 14),("鹽城", 15),("赤峰", 16),("青島", 18),("乳山", 18),("金昌", 19),("泉州", 21),("萊西", 21),("日照", 21),("膠南", 22),("南通", 23),("拉薩", 24),("云浮", 24),("梅州", 25),("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("廈門", 26),("汕尾", 26),("潮州", 26),("丹東", 27),("太倉", 27),("曲靖", 27),("煙臺", 28),("福州", 29),("瓦房店", 30),("即墨", 30),("撫順", 31),("玉溪", 31),("張家口", 31),("陽泉", 31),("萊州", 32),("湖州", 32),("汕頭", 32),("昆山", 33),("寧波", 33),("湛江", 33),("揭陽", 34),("榮成", 34),("連云港", 35),("葫蘆島", 35),("常熟", 36),("東莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南寧", 37),("營口", 37),("惠州", 37),("江陰", 37),("蓬萊", 37),("韶關", 38),("嘉峪關", 38),("廣州", 38),("延安", 38),("太原", 39),("清遠", 39),("中山", 39),("昆明", 39),("壽光", 40),("盤錦", 40),("長治", 41),("深圳", 41),("珠海", 42),("宿遷", 43),("咸陽", 43),("銅川", 44),("平度", 44),("佛山", 44),("海口", 44),("江門", 45),("章丘", 45),("肇慶", 46),("大連", 47),("臨汾", 47),("吳江", 47),("石嘴山", 49),("沈陽", 50),("蘇州", 50),("茂名", 50),("嘉興", 51),("長春", 51),("膠州", 52),("銀川", 52),("張家港", 52),("三門峽", 53),("錦州", 54),("南昌", 54),("柳州", 54),("三亞", 54),("自貢", 56),("吉林", 56),("陽江", 57),("瀘州", 57),("西寧", 57),("宜賓", 58),("呼和浩特", 58),("成都", 58),("大同", 58),("鎮江", 59),("桂林", 59),("張家界", 59),("宜興", 59),("北海", 60),("西安", 61),("金壇", 62),("東營", 62),("牡丹江", 63),("遵義", 63),("紹興", 63),("揚州", 64),("常州", 64),("濰坊", 65),("重慶", 66),("臺州", 67),("南京", 67),("濱州", 70),("貴陽", 71),("無錫", 71),("本溪", 71),("克拉瑪依", 72),("渭南", 72),("馬鞍山", 72),("寶雞", 72),("焦作", 75),("句容", 75),("北京", 79),("徐州", 79),("衡水", 80),("包頭", 80),("綿陽", 80),("烏魯木齊", 84),("棗莊", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧陽", 86),("庫爾勒", 86),("安陽", 90),("開封", 90),("濟南", 92),("德陽", 93),("溫州", 95),("九江", 96),("邯鄲", 98),("臨安", 99),("蘭州", 99),("滄州", 100),("臨沂", 103),("南充", 104),("天津", 105),("富陽", 106),("泰安", 112),("諸暨", 112),("鄭州", 113),("哈爾濱", 114),("聊城", 116),("蕪湖", 117),("唐山", 119),("平頂山", 119),("邢臺", 119),("德州", 120),("濟寧", 120),("荊州", 127),("宜昌", 130),("義烏", 132),("麗水", 133),("洛陽", 134),("秦皇島", 136),("株洲", 143),("石家莊", 147),("萊蕪", 148),("常德", 152),("保定", 153),("湘潭", 154),("金華", 157),("岳陽", 169),("長沙", 175),("衢州", 177),("廊坊", 193),("菏澤", 194),("合肥", 229),("武漢", 273),("大慶", 279)]geo = Geo("全國主要城市空氣質量","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,visual_range=[0, 200],visual_text_color="#fff",symbol_size=15,is_visualmap=True) geo.render() os.system("render.html") from pyecharts import Geo import os data = [("海門", 9), ("鄂爾多斯", 12), ("招遠", 12), ("舟山", 12), ("齊齊哈爾", 14), ("鹽城", 15),("赤峰", 16), ("青島", 18), ("乳山", 18), ("金昌", 19), ("泉州", 21), ("萊西", 21),("日照", 21), ("膠南", 22), ("南通", 23), ("拉薩", 24), ("云浮", 24), ("梅州", 25)] geo = Geo("全國主要城市空氣質量", "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", effect_scale=3, visual_range=[0, 200], visual_text_color="#fff", is_visualmap=True)#type閃爍,visual_range左側圖例范圍,is_visualmap是否顯示圖例 #geo.show_config() geo.render("kongqi.html") os.system("kongqi.html")地圖-Map
from pyecharts import Map import os value = [155, 10, 66, 78] attr = ["福建", "山東", "北京", "上海"] map = Map("全國地圖示例", width=1200, height=600) map.add("", attr, value, maptype='china') map.render() os.system("render.html")?
參考文章:
- python開發之pyecharts
- python 包的使用 (二)——pyecharts
- ?Python:數據可視化pyecharts的使用
- ?Python可視化神器——pyecharts的超詳細使用指南!
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Python可视化神器之pyecharts的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bootstrap-select使用说明
- 下一篇: 计算机应用基础第二章,计算机应用基础第二