Python中用Vega:Atair初步教程
·
安装和示例
Vega是一个基于Web的声明式可视化语法(Declarative Visualization Grammar),在Python中,可安装atair来调用Vega
pip install altair vega_datasets -i https://pypi.tuna.tsinghua.edu.cn/simple
简单示例如下

这是个html格式的文件,支持导出为其他格式,且支持在Vega编辑器中进一步编辑。绘图代码如下,简单直观。
import altair as alt
from vega_datasets import data
cars = data.cars()
# 创建图表
chart = alt.Chart(cars).mark_circle().encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Origin:N'
).properties(width=640, height=480)
chart.save('test_vega.html')
【mark_circle】是散点图,【encode】用于编辑散点图的数据。
绘图数据x,y显然是从数据集中选取标签,Q标记标识这是个确定的数值。
Vega编辑器
VS Code提供了Vega Viewer,用于查看Vega图像。
【to_json】可以将图表导出为json格式的字符串,将该字符串另存为json格式,就可以在Vega Viewer中编辑了。
json = chart.to_json(indent=2) # indent=2 让输出更易读
# 保存到本地文件
with open('chart_spec.json', 'w') as f:
f.write(json)
在VS Code中打开对应的json文件后,按下【Ctrl+Shift+P】,输入【Vega: Preview Vega Graph】,则其右侧可弹出当前json图像。
Vega Viewer中提供了一些基础示例,按下【Ctrl+Shift+P】,输入【Vega: Examples】,即可选择示例数据并打开,打开之后,就可以使用刚刚的绘图指令进行查看了。
交互式图表
Vega不仅静态图表,也支持动态交互,示例如下

图中红线为选中区域的平均值,随着拖动范围的不断变化,红线的高度也在不断进行计算。代码如下
import altair as alt
from vega_datasets import data
source = data.seattle_weather()
brush = alt.selection_interval(encodings=['x'])
bars = alt.Chart().mark_bar().encode(
x='month(date):O',
y='mean(precipitation):Q',
opacity = alt.when(brush).then(alt.value(1)).otherwise(alt.value(0.7)),
).add_params(
brush
)
line = alt.Chart().mark_rule(color='firebrick').encode(
y='mean(precipitation):Q',
size=alt.SizeValue(3)
).transform_filter(
brush
)
alt.layer(bars, line, data=source
).properties(width=640, height=400
).save('weather.html')
代码中,【mark_bar】为柱形图,【mark_rule】为直线。
和前面绘制cars时的数据不同,这回 x , y x,y x,y的取值中出现了函数语法,其中month用于提取日期的月份,mean用于计算平均值。在bars中,由于指定了x值,所以求平均时会和x一一对应;而line中,并未指定x值,所以求平均的时候,会参照用户选择的区域。
更多推荐


所有评论(0)