國內建議使用下面的鏡像安裝
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
當你使用的是python2.x時,請務必插入此代碼:
from __future__ import unicode_literals
當你使用的是python3.x時,請務必粉我一下!
參考pyechart官方文檔:http://pyecharts.org/#/zh-cn/
一切以官方為准!!!
當然里面也有一些錯誤,比如:Polar-Love這個部分函數命名錯誤
邁出可視第一步,數據分析不是事。
使用的【基本要領】在於:
-
導入相關圖表包
-
進行圖表的基礎設置,創建圖表對象
-
利用add()方法進行數據輸入與圖表設置(可以使用print_echarts_options()來輸出所有可配置項)
-
利用render()方法來進行圖表保存
新的版本有了很多的調整,請具體參照官方文檔
比如使用
from pyecharts.charts import Bar
代替
from pyecharts import Bar
如果想在直接生成html文件,需要調用.render("xxx.html")
函數
如果想在notebook中直接展示圖表,需要調用render_notebook()
函數
如果想要繪制出基本的圖形,需要調用make_snapshot(snapshot, bar.render(), "bar.png") ,其中需要安裝對應的瀏覽器的驅動
Note: 在使用 Pandas&Numpy 時,請確保將數值類型轉換為 python 原生的 int/float。比如整數類型請確保為 int,而不是 numpy.int32
新版本基本用法
直接參照最新官網的案例,挑選自己合適的demo進行改裝即可
from pyecharts.charts import Bar bar = Bar() bar.add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) # render 會生成本地 HTML 文件,默認會在當前目錄生成 render.html 文件 # 也可以傳入路徑參數,如 bar.render("mycharts.html") bar.render()
在notebook里面可以使用bar.render_notebook()直接可視化
以下是目前的可視化項目的大類,具體的還有小類,根據不同的數據特點來選擇不同的項目
- 基本圖表
- Calendar:日歷圖
- Funnel:漏斗圖
- Gauge:儀表盤
- Graph:關系圖
- Liquid:水球圖
- Parallel:平行坐標系
- Pie:餅圖
- Polar:極坐標系
- Radar:雷達圖
- Sankey:桑基圖
- Sunburst:旭日圖
- ThemeRiver:主題河流圖
- WordCloud:詞雲圖
- 直角坐標系圖表
- 樹型圖表
- 地理圖表
- 3D 圖表
- 組合圖表
- HTML 組件
pyecharts 對配置項基本上都采用 XXXOpts/XXXItems 以及 dict 兩種數據形式,這兩種是完全等價的。
比如下面三者效果是一致的
c = Bar(init_opts=opts.InitOpts(width="620px", height="420px")) c = Bar(dict(width="620px", height="420px")) c = Bar({"width": "620px", "height": "420px"})
將數據傳入到 pyecharts 的時候,需要自行將數據格式轉換成上述 Python 原生的數據格式。使用數據分析大都需要使用 numpy/pandas,但是 numpy 的 numpy.int64/numpy.int32/... 等數據類型並不繼承自 Python.int
。
Q1: 如何轉換?
# for int [int(x) for x in your_numpy_array_or_something_else] # for float [float(x) for x in your_numpy_array_or_something_else] # for str [str(x) for x in your_numpy_array_or_something_else]
Q2: 有沒有更方便的轉換方法?
Series.tolist()
老式版本基本用法
我們先創建一組數據
//設置行名 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 from pyecharts import Bar //設置柱狀圖的主標題與副標題 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()
餅圖-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(1)---單獨的表格
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()
圖表布局 Grid(2)--合並的表格
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()
使用pyecharts繪制交互式動態地圖
python調用echart交互式可視化
參考博文:
https://www.jianshu.com/p/52dbe714d2f6
https://blog.csdn.net/weixin_42232219/article/details/90631442
https://www.jianshu.com/p/554d64470ec9