在 Altair 中更改图例的大小

Posted

技术标签:

【中文标题】在 Altair 中更改图例的大小【英文标题】:Changing Size of Legend in Altair 【发布时间】:2019-08-21 22:23:01 【问题描述】:

我很喜欢 Altair 创建 choropleth 地图!然而,我最大的问题是我无法弄清楚如何更改图例的大小。我已经阅读了文档并尝试了几件事无济于事。

这是一个使用 Altair 文档中的 unemployment map by county 的示例。我添加了一个“配置”层来更改地图和图例上标题的字体大小。请注意“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

图像应该是这样的:

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

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

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

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

我尝试了大约十几种不同的方法,但均无济于事。

有人有解决办法吗?

【问题讨论】:

【参考方案1】:

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

.configure_legend(
titleFontSize=18,
labelFontSize=15
) 

【讨论】:

【参考方案2】:

如您所见,无论图表大小如何,图例的默认像素大小都是恒定的。如果你想调整它,你可以使用configure_legend()图表方法。

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

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

【讨论】:

谢谢,jakevdp。这是最近在 3.0 中修复的东西吗?我很确定我在 2.4 中尝试了 gradientHeight 和 gradientWidth ,但没有成功,但这段代码在 3.0 中绝对有效。但是,看起来其他各种事情也发生了变化。例如,现在配色方案看起来非常不同:) 图例是从 Vega-Lite 2 到 3 的重大变化之一:现在有用于创建水平和垂直图例的选项,并且配置选项已相应更新和重命名。

以上是关于在 Altair 中更改图例的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 altair 分层图中添加图例

altair 删除或抑制自动生成的图例

是否可以在 Plotly 中更改图例框的大小?

更改 matplotlib 图例中各个标签的字体大小

如何在 Altair 图表上只显示一个系列

Plotly:如何更改图例中显示的线条的大小?