簡介
pyecharts是一個由百度開源的數據可視化,憑藉着良好的互交性,精巧的圖表設計,得到了衆多開發者的認可,而python是一門富有表達力的語言,很適合用於數據處理。當數據分析遇上數據可視化時,pyecharts誕生了。
安裝
pip3 install pyecharts
- 版本檢查
import pyecharts
pyecharts.__version__
>>>'1.5.1'
柱狀圖、條形圖
import pyecharts.charts as pyec
x = ['甲','乙','丙']
y = [300,800,600]
bar = pyec.Bar()
bar.add_xaxis(x)
bar.add_yaxis(series_name='公司A',yaxis_data=y)
bar.render_notebook()
畫出來的圖爲動態圖
- 把鼠標放在柱狀區域會出現相關信息
- 點擊圖正上的小方框,公司A的信息會隱藏起來
可以把圖生成html文件
bar.render("F:\\pyec.html")
>>>'F:\\pyec.html'
- 在這個路徑下就會有這個文件
添加標題
import pyecharts.options as opts
bar.set_global_opts(title_opts=opts.TitleOpts(title='比較圖'))
bar.render_notebook()
加另一組數據
y1 = [1200,500,200]
bar.add_yaxis(series_name='公司B',yaxis_data=y1)
bar.render_notebook()
- 可以只看公司A的對比圖
- 可以只看公司B的對比圖
轉成條形圖
bar.reversal_axis()
bar.render_notebook()
折線圖
x = ['甲','乙','丙']
y = [300,800,600]
line = pyec.Line()
line.add_xaxis(x)
line.add_yaxis(series_name='A',y_axis=y)
line.render_notebook()
再加一條折線
y2 = [1300,400,700]
line.add_yaxis(series_name='B',y_axis=y2)
line.render_notebook()
同樣的,也可以只顯示一條折現
在圖中增加提示項
數據提示
bar.set_global_opts(
tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross')
)
bar.render_notebook()
工具箱
bar.set_global_opts(
tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross'),
toolbox_opts=opts.ToolboxOpts(is_show=True,orient='horizontal'),
)
bar.render_notebook()
工具箱豎置
bar.set_global_opts(
tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross'),
toolbox_opts=opts.ToolboxOpts(is_show=True,orient='vertical'),
)
bar.render_notebook()
增加縮放功能
bar.set_global_opts(
tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross'),
toolbox_opts=opts.ToolboxOpts(is_show=True,orient='vertical'),
datazoom_opts=opts.DataZoomOpts(type_='slider',range_start=0,range_end=2500),
)
bar.render_notebook()
餅圖
Pie需要的數據格式:
[[x1,y1],[x2,y2],[x3,y3]]或[(x1,y1),(x2,y2)]
x_data = ['直接訪問','營銷推廣','博客推廣','搜索引擎']
y_data = [830,214,300,1100]
data_pair = list(zip(x_data,y_data))
print(data_pair)
>>>[('直接訪問', 830), ('營銷推廣', 214), ('博客推廣', 300), ('搜索引擎', 1100)]
pie = pyec.Pie()
pie.add(series_name="推廣渠道",data_pair=data_pair)
pie.render_notebook()
環形圖
pie = pyec.Pie()
pie.add(series_name="推廣渠道",data_pair=data_pair,radius=['50%','75%'])
pie.render_notebook()
散點圖
準備工作
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei']#用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus'] = False#用來正常顯示負號
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
import warnings#去除部分警告信息
warnings.filterwarnings('ignore')
import numpy as np
x = np.linspace(0,10,30)
y1 = np.sin(x)
y2 = np.cos(x)
用其他包畫散點圖
plt.scatter(x,y1)
sns.scatterplot(x,y1)
用pyecharts 畫散點圖
scatter = pyec.Scatter()
scatter.add_xaxis(xaxis_data=x)
scatter.add_yaxis(series_name='y=sin(x) 散點圖',y_axis=y1)
scatter.render_notebook()
設置數據點不顯示
scatter = pyec.Scatter()
scatter.add_xaxis(xaxis_data=x)
scatter.add_yaxis(series_name='y=sin(x) 散點圖',
y_axis=y1,
label_opts=opts.LabelOpts(is_show=False))
scatter.render_notebook()
加數據(點的大小設置)
scatter.add_yaxis(
series_name='y=cos(x)',
y_axis = y2,
label_opts=opts.LabelOpts(is_show=False),
symbol_size=20#點大小設置
)
scatter.render_notebook()
scatter.add_yaxis(series_name='y=sin(x) 散點圖',
y_axis=y1,
label_opts=opts.LabelOpts(is_show=False),
symbol_size=15)
scatter.add_yaxis(
series_name='y=cos(x)',
y_axis = y2,
label_opts=opts.LabelOpts(is_show=False),
symbol_size=20
)
scatter.render_notebook()
控制散點形狀
- circle
scatter = pyec.Scatter()
scatter.add_xaxis(xaxis_data=x)
scatter.add_yaxis(series_name='y=sin(x) 散點圖',
y_axis=y1,
label_opts=opts.LabelOpts(is_show=False),
symbol='circle')
scatter.render_notebook()
- rect
scatter = pyec.Scatter()
scatter.add_xaxis(xaxis_data=x)
scatter.add_yaxis(series_name='y=sin(x) 散點圖',
y_axis=y1,
label_opts=opts.LabelOpts(is_show=False),
symbol='rect')
scatter.render_notebook()
- roundRect(圓角)
scatter = pyec.Scatter()
scatter.add_xaxis(xaxis_data=x)
scatter.add_yaxis(series_name='y=sin(x) 散點圖',
y_axis=y1,
label_opts=opts.LabelOpts(is_show=False),
symbol='roundRect')
scatter.render_notebook()
- triangle
- diamond
- pin
- arrow
- none