Altair简介
Altair是一个强大且简明的声明式统计可视化Python库,它能够快速绘制出各种优雅可交互的统计图表。 Altair[1]基于一个前端图表库Vega-Lite,因此绘图的成果也可以通过chart .to_json()在前端项目中结合vega库使用。Vega-Lite是一套交互式图形语法,通过简洁的JSON键值对配置快速生成可视化结果,来支持数据分析工作。Altair可读作阿泰尔,天文学中指牵牛星、牛郎星,是天鹰座中最明亮的恒星,用这个意象也表达了这个库的野望。
Altair的语法特点是,建立chart对象后,通过约定是什么图形(点、线、柱或其他)、轴域映射方式、颜色输出可视化图表。理念通过实践去理解,就不讲太虚的了,直接看绘图的框架。
基础绘图
Altair绘图代码框架如下:
import altair as altimport pandas as pddf=pd.DataFrame({
'x':['Mon.','Tue.','Wed.','Thu.','Fri.'], 'y':[76,37,90,60,50]})alt.Chart(df,width=400,height=300).mark_point().encode( x='x', y='y').interactive()
Altair散点图绘制效果
从上面的语句能看到的是其写法很像ggplot2、plotnine这类库:建立chart对象再声明图表类型和x、y轴数据映射,并可以用链式写法不断垒个性化配置上去,这也是声明式(declarative)语法的特点。
通过 pip install altair
安装好Altair库之后,通过alt.Chart(df, width=400, height=300)
创建一个绘图对象,.mark_point()
表明映射为散点图,散点图需要对应的x,y序列坐标,写在.encode()
里, .interactive()
让输出的图表有基础的交互功能。
.encode()
对应的配置参数有:
•x: x轴的数据,水平方向数据序列;•y: y轴的数据列表,对应竖直方向;•size: 点状类型的半径,或其他类型的长度等;•color: 图形元素的颜色,支持CSS颜色的各种写法,可以是一列也可以是一个16进制的字符串;•opacity: 图元透明度,用的是opacity,不是alpha喔;•shape: 点状元素的形状;•tooltip: 鼠标放到图元上时显示的提示文本列;•order: 声明图层顺序;
另外column和row是在分面时用的,根据选定的列进行分面的水平拆分和垂直拆分。 Altair更擅长画统计图表,因此下面的案例在数据方面全用数据框(DataFrame)格式进行实践。
同样的数据、同样的列映射到x轴和y轴,encode的写法是一致的,改变图表类型只需要.mark_point
变成.mark_line
绘制折线图。
几种mark
从图中可以看出,Altair有好几种方法绘制出散点图,mark_point()统领散点图,而mark_circle()、mark_square()等和_point()
的不同之处在于circle限制了用圆形,而point是可通过size配置形状的。
Altair可以轻松地绘制出折线图及阶梯线图。
alt.Chart(df,width=400,height=300).mark_line(color='#1EAFAE').encode( x='x', y='y')
Altair绘制折线图
在mark_line里设置interpolate为step-after折线图并阶梯线图。
#所用到的数据集df=