每行Altair热图独立的颜色图计算

约瑟索托

我正在尝试使用Altair绘制热图。这个想法是将颜色映射独立地应用于每一行,而不是应用于所有观察结果。不幸的是,这是我到目前为止所得到的。

在此处输入图片说明

如您在图表上看到的,您只能看到一行中的更改,因为这是更多情况下的更改。但是,其想法是将映射应用于每一行,而不是全部应用。

这是我到目前为止的代码:

data = pd.read_csv(
    "https://raw.githubusercontent.com/jlcoto/covid-peru-data/master"
    "/data/limpia/data_limpia_datos_siscovid_2020_05_26.csv",
    parse_dates=["fecha_resultado"],
    dtype={"ubigeo": "string"},
)

evol_departamento = (
    data.groupby(
        ["departamento", pd.Grouper(key="fecha_resultado", freq="D")]
    )[["uuid"]]
    .count()
    .rename(columns={"uuid": "num_casos"})
    .reset_index()
)

alt.Chart(evol_departamento).mark_rect().encode(
    x="monthdate(fecha_resultado)",
    y="departamento:O",
    color=alt.Color("num_casos:Q"),
).resolve_scale(color="independent",)

我看到了有关使用的答复resolve_scale,但似乎并没有解决问题。

jakevdp

resolve功能仅适用于多面板图表(构面,连续,重复,图层等)。要在单个图表的编码中调整颜色比例,最好的方法是使用altair变换来计算数据的规范化版本。

这是您的数据集的示例:

alt.Chart(evol_departamento).transform_joinaggregate(
    max_casos='max(num_casos)',
    groupby=['departamento']
).transform_calculate(
    num_casos_norm='datum.num_casos / datum.max_casos'
).mark_rect().encode(
    x="monthdate(fecha_resultado)",
    y="departamento:O",
    color=alt.Color("num_casos_norm:Q"),
)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章