python - 在 altair 中向分层图表添加图例
问题描述
考虑以下示例:
import altair as alt
from vega_datasets import data
df = data.seattle_weather()
temp_max = alt.Chart(df).mark_line(color='blue').encode(
x='yearmonth(date):T',
y='max(temp_max)',
)
temp_min = alt.Chart(df).mark_line(color='red').encode(
x='yearmonth(date):T',
y='max(temp_min)',
)
temp_max + temp_min
在结果图表中,我想添加一个图例,显示蓝线显示最高温度,红线显示最低温度。实现这一目标的最简单方法是什么?
我看到(例如在这个问题的解决方案中:Labeling Layered Charts in Altair (Python))如果在编码中设置颜色或大小左右,altair 只会添加一个图例,通常使用分类列,但这不是可能在这里,因为我正在绘制整个列,并且标签应该是列名(现在显示在 y 轴标签中)。
解决方案
我会做一个折叠变换,以便可以正确编码变量。
import altair as alt
from vega_datasets import data
df = data.seattle_weather()
alt.Chart(df).mark_line().transform_fold(
fold=['temp_max', 'temp_min'],
as_=['variable', 'value']
).encode(
x='yearmonth(date):T',
y='max(value):Q',
color='variable:N'
)
推荐阅读
- ios - JWT 使用 HMACSHA256 验证签名并通过 Swift 显示“无效签名”
- arrays - 无法在属性结构中插入来自 json 的字符串
- java - 有没有办法在 Hashmap 中填充值以删除文本文件中的特定值?
- javascript - 可能未处理的 Promise Rejection (Id: 0): TypeError: undefined is not an object (evalating 'err.response.data')
- keras - 如何在分类 NN 中输出多个时间步?
- julia - 如何在 JuliaDB 中使用汇总函数?
- android - 在我的 libgdx 项目中,如何修复:“错误:没有为属性 'manifestOutputDirectory' 指定值。”?
- java - 供应 id 的 Java 返回文章库
- python - 如何在jupyter笔记本中执行eof
- python - 用python将句子列表拆分为单词列表