日常刷公众号时,看到一篇推文:还在用Matplotlib? 又一可视化神器Altair登场 .
python最大的优势就是有丰富且好用的模块,因此看到新的模块时,我就会想去试一试. 关于画图,早期都是用Excel的,后来在大物实验课上知道了Origin,也用过. 之后接触了matlab和R,也用过此两种软件. 印象里面,R的画图是非常丰富的,一般是用ggplot的,不过我倒也用过R的quantmod画过非常好看的股价K线图. 而python,用的则是matplotlib. 就我所掌握的而言,在画数据类图表时,python确实不如R. 因此掌握一个新的python模块也是挺有意义的. 而且我也统一只用python进行编程了. 写这个文章就是整理一下"altair"这个模块的常规用法,省的我以后要用之时盲目百度.
简单例子:
- 使用前先pip进行安装:
pip install altair
- altair内部的数据以pandas中的DataFrame格式存储,例:
data = pd.DataFrame({'country_id': ['A', 'B','C','D','E','F'],
'population': [1, 100, 200, 300, 400, 500],
'income': [1000, 50, 200, 300, 200, 150]})
- 绘图:
c = alt.Chart(data)
c = c.mark_circle(size=200)
c = c.encode(x='population:Q',y='income:Q',
color='country_id:N',
tooltip=['country_id', 'population', 'income'])
#c.serve()
c.savechart('plot.html')
#c.display()
- 结果
![](https://img.haomeiwen.com/i12679136/0321e5e27917e2dc.png)
- 说明
- tooltip是为了添加数据提示的功能 (鼠标悬停在数据上时,会显示该数据的详细信息 );
- color='country_id:N'的"N"改成"Q",则颜色为渐变色(要求原变量为数值);
- Q:连续实值变量;
- O:离散有序变量;
- N:离散无序变量;
- T:时间或日期变量;
- c.savechart('plot.html')表直接存储作图结果;
- c.display()用以查看作图信息;
图形语法
Altair是基于图形语法的,只需要三个主要的参数:
- Mark. 数据在图形中的表达形式。点、线、柱状还是圆圈?
- Channels. 决定什么数据应该作为x轴,什么作为y轴;图形中数据标记的大小和颜色.
- Encoding. 指定数据变量类型。日期变量、量化变量还是类别变量?
图形选择
Method | Description |
---|---|
mark_area() | 直方图 |
mark_bar() | |
mark_circle() | 圆点 |
mark_line() | |
mark_point() | 圆圈 |
mark_rule() | 直方图(接触边界) |
mark_square() | 正方形点 |
mark_text() | 指定字符为图形(设置size和text) |
mark_tick() |
通道选择
x,y轴或column、row
通道描述
Channel | Altair Class | Description |
---|---|---|
color | Color | The color of the mark |
opacity | Opacity | The opacity of the mark |
shape | Shape | The shape of the mark |
size | Size | The size of the mark |
通道排序
Channel | Altair Class | Description |
---|---|---|
order | Order | - |
path | Path | - |
后面一些变量设置还不甚了解,留待以后要用到时再慢慢尝试.
特点
- Encoding中指定变量类型为量化变量,那么 Altair 将会使用连续的色标来着色(默认为浅蓝色-蓝色-深蓝色). 如果变量类型指定为类别变量,那么 Altair 会为每个类别赋予不同的颜色.;
- 可以方便的从现有图表中创建新的图表,只需要改动X、Y轴的信息(可以只有一个坐标轴,但不能三个及以上);
网友评论