今天天气好晴朗~让我们来学学pyecharts!
先上官网戳这里
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
那我们为啥选它,因为它API简洁支持链式调用,囊括了30多种常见图表,支持主流Notebook环境、Jupyter Notebook和JupyterLab,可以轻松集成至Flask,Django等主流Web框架,高度灵活的配置项,很容易上手,简直不要太好用啊!!!
首先在cmd中敲入pip install pyecharts
,如果需要绘制地图相关内容,需要一并安装如下内容(都是在cmd中)
- 全球国家地图:echarts-countries-pypkg
- 中国省级地图:echarts-china-provinces-pypkg
- 中国市级地图:echarts-china-cities-pypkg
再在jupyter notebook里导入并查看版本
import pyecharts
pyecharts.__version__
输出
'1.5.1'
导入成功后我们就来体验一下,真的是飞一般的感jio!
x = ['a','b','c']
y = [300,200,500]
bar = pyec.Bar() #类要大写,先实例化再赋值
bar.add_xaxis(x)
bar.add_yaxis(series_name='公司A',yaxis_data=y) #相当于图例,series
bar.set_global_opts(title_opts=opts.TitleOpts(title='比较图')) #加配置选项
y1 = [800,600,700]
bar.add_yaxis(series_name='公司B',yaxis_data=y1) #增加一个数据系列
bar.render_notebook() #在notebook中显示出来
最好玩的是它的图可以动态调整,如果你点什么的图例它变灰之后该数据就会在图中隐藏。另外,如果想将它变成横着的条形图可以输入命令bar.reversal_axis()
也是很方便的。
下面以折线图为例,其实和上面直方图差不多,就是bar改为line,同样需要实例化,想再加一条折线也是一样的做法,所以我们详细讲一下全局参数设置,看栗子!
import pyecharts.charts as pyec
import pyecharts.options as opts
x = ['2017','2018','2019']
y = [300,900,600]
line = pyec.Line()
line.add_xaxis(x)
line.add_yaxis(series_name='A',y_axis=y1)
#进行该图的全局参数设置
line.set_global_opts(
legend_opts=opts.LegendOpts(is_show=True),#默认展示图例
toolbox_opts=opts.ToolboxOpts(is_show=True,orient='horizontal'),#工具箱设置,如果想要竖着放,参数为'vertical'
dtatzoom_opts=opts.DataZoomOpts(type_='slider',range_start=0,#设置区域缩放功能
tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross')) #将鼠标移到到图中会有标尺数据
line.render_notebook()
(可以从画红线的地方对图数据进行修改、刷新与保存)啊啊对了,使用orient=‘vertical’
toolbox内置命令可以使工具箱垂直放置
补充Line增加提示项(TooltipOpts)
trigger触发类型,可选:item:数据项图形触发,主要用于散点图,饼图
axis:坐标轴触发,主要用于条状图,折线图
none:什么都不做
不仅如此,还可以自定义图表颜色VisualMapOpts视觉映射配置项,还可以设置图表大小,通过init_opts=opts.InitOpts(width='1000px',height='600px')
来进行设置,这些都可以在官网系统的学习
不知道大噶还记不记得我们前面学习的用seaborn画饼图,现在我们用pyecharts更方便哦,同样的也是动态,你可以点某项的图例然后从图中删去那个数据得到没有该项数据的剩下数据组成的饼图,需要注意的是,要求数据是嵌套列表或者嵌套元组的形式
#构建饼图数据
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()
让我来康康下一个被pick的小可爱是谁呢,啊,是环形图啊!环形图也是很好画,和前面一样可以动态关闭数据,其中参数radius来控制圆环宽度(里面的小白圆)还可以设置每项数据占比使用命令piel.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter="{a} <br/> {b} : {c} ({d}%)"))
pie1 = pyec.Pie()
pie1.add(series_name="推广渠道",data_pair=data_pair,radius=['40%','75%'])
pie1.set_global_opts(title_opts=opts.TitleOpts(title='环形图'))
pie1.render_notebook()
下一个是散点图,散点图需要处理的地方比较多,如果只是简单的绘制sin、cos函数它会“贴心”的在图表上显示数值点,就会显得密密麻麻乱乱的,所以我们需要对其进行如下处理
#生成数据
import numpy as np
x = np.linspace(0,10,30)
y1 = np.sin(x)
y2 = np.cos(x)
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_size=15,#设置散点图点的大小
symbol='pin')#改点的形状(pin大头针雨滴)
scatter.add_yaxis(series_name='y=cos(x)函数散点图',y_axis = y2,
label_opts=opts.LabelOpts(is_show=False))#设置数据点是否展示)
scatter.render_notebook()
最后显示出来的图就会好看很多啦,大噶也可以自己创作,让你的图表与众不同哟!