更改Altair中图例的大小

时间:2019-03-31 17:23:01

标签: python gis data-science vega-lite altair

我爱Altair制作Choropleth地图!但是,我最大的问题是我不知道如何更改图例的大小。我已经阅读了文档,并尝试了几项尝试,但无济于事。

以下是使用Altair文档中的unemployment map by county的示例。我添加了一个“ config”层,以更改地图和图例上标题的字体大小。注意“ config”中代码的.configure_legend()部分。

counties = alt.topo_feature(data.us_10m.url, 'counties')
source = data.unemployment.url

foreground = alt.Chart(counties).mark_geoshape(
    ).encode(
    color=alt.Color('rate:Q', sort="descending",  scale=alt.Scale(scheme='plasma'), legend=alt.Legend(title="Unemp Rate", tickCount=6))
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['rate'])
).project(
    type='albersUsa'
).properties(
    title="Unemployment Rate by County",
    width=500,
    height=300
)

config = alt.layer(foreground).configure_title(fontSize=20, anchor="middle").configure_legend(titleColor='black', titleFontSize=14) 

config

这是图像的外观:

enter image description here

如果我这样更改地图的大小:

counties = alt.topo_feature(data.us_10m.url, 'counties')
source = data.unemployment.url

foreground = alt.Chart(counties).mark_geoshape(
    ).encode(
    color=alt.Color('rate:Q', sort="descending",  scale=alt.Scale(scheme='plasma'), legend=alt.Legend(title="Unemp Rate", tickCount=6))
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['rate'])
).project(
    type='albersUsa'
).properties(
    title="Unemployment Rate by County",
    width=900,
    height=540
)

config = alt.layer(foreground).configure_title(fontSize=20, anchor="middle").configure_legend(titleColor='black', titleFontSize=14) 

config

图例保持不变,因此与地图相比,它看起来很小:

enter image description here

或者,如果我缩小地图尺寸,那么图例将会很大!

enter image description here

我尝试了大约12种不同的尝试,但没有成功。

有人对此有解决方案吗?

2 个答案:

答案 0 :(得分:3)

如您所见,图例的默认大小(以像素为单位)是恒定的,而与图表的大小无关。如果要调整它,可以使用configure_legend()图表方法。

在Altair 3.0或更高版本中,以下参数是用于调整图例渐变大小的相关参数:

chart.configure_legend(
    gradientLength=400,
    gradientThickness=30
) 

答案 1 :(得分:1)

第一个答案非常接近,但缺少更改图例中字体大小的最重要部分。使用下面的代码段调整图例中文本的字体大小。

.configure_legend(
titleFontSize=18,
labelFontSize=15
)