在 Altair / Vega-Lite 中用独立轴连接两个地理形状图表?

问题描述 投票:0回答:1

我正在尝试绘制两个单独的地理形状图表并将它们连接在一起。以下是我正在尝试做的 MWE:

import altair as alt
from vega_datasets import data
import geopandas as gpd

source = data.us_10m

source = gpd.read_file(source.url).set_crs(epsg=4326)

r1 = alt.Chart(source).mark_geoshape().transform_filter(alt.datum.id == '49047')
r2 = alt.Chart(source).mark_geoshape().transform_filter(alt.datum.id == '20123')

r1 | r2

单独绘制它们效果很好; Altair 会自动绘制形状并缩放至其范围。

R1:

R2:

但是,当我尝试连接它们时,它们共享轴限制,并且每个图表的视图都会扩展得足够大,即使只显示一个,也可以显示两者。

串联情节:

我的期望是我可以在没有额外缩放的情况下获得上面的 R1 和 R2 图像。我尝试将轴设置为独立解析,但它没有改变输出。

(r1 | r2).resolve_axis(x='independent', y='independent')

有关如何在 Vega-Lite 中执行此操作(无需 Altair 抽象)的答案也很有用。

python vega-lite altair
1个回答
0
投票

看来这是 Vega-Lite 中的一个错误,我已经在存储库中提交了一个问题

与此同时,我已经找到了一种副作用最小/无副作用的解决方法。如果图表使用不同的投影,Vega-Lite 不会缩放图表以覆盖彼此的范围。因此,我们可以稍微改变每个图表的投影,它就会按预期运行。

import altair as alt from vega_datasets import data import geopandas as gpd source = data.us_10m source = gpd.read_file(source.url).set_crs(epsg=4326) r1 = alt.Chart(source).mark_geoshape( ).transform_filter(alt.datum.id == '49047' ).project('equalEarth') r2 = alt.Chart(source).mark_geoshape( ).transform_filter(alt.datum.id == '20123' ).project('equalEarth', precision=.707) r1 | r2

Workaround image

© www.soinside.com 2019 - 2024. All rights reserved.