您可以在Altair图表的图例中添加“缺少数据”标签吗?

我使用Altair绘制了一个热图,其中包括一个色条,但是热图中缺少的数据(空白/白色)未在色条上标记。有没有办法在图例上添加单独的标签(例如,在颜色栏下方),以显示图表中缺失数据的表示方式?

我想出了一个解决方案,该解决方案在我的图表顶部包括一个“鬼”层-一个尺子图表,其大小= 0(使该行不可见),并用填充有字符串值的列着色“无数据”(请参见下面的代码)。这会强制使用图例,但我想知道是否有更好的方法。 (请参见以下链接,查看我的完整示例:heatmap plot

import numpy as np
import altair as alt
import pandas as pd

# Example heatmap data
heatmap_df = pd.DataFrame([["NY",1999,1],["NY",2000,np.nan],["MA",4]],columns = ["state","year","rate"])

# Example Legend dataframe
legend_no_data = pd.DataFrame([[1999,"No Data"]],columns = ["year","text"])


# Example chart with "No Data" label
heatmap = alt.Chart(heatmap_df).mark_rect().encode(alt.X("year:O"),alt.Y("state:N"),alt.Color("rate:Q"))

# Chart for "No Data" legend item
vacc_legend_no_data = alt.Chart(legend_no_data).mark_line(
    size=0
).encode(
    x='year:O',color = alt.Color("text:N",legend = alt.Legend(title = "",symbolType = "square")))

heatmap + vacc_legend_no_data

“鬼魂层”在颜色栏的底部添加了一个标有“无数据”的空方块,但我希望有一种更好的方法来表示这一点!

zl69301 回答:您可以在Altair图表的图例中添加“缺少数据”标签吗?

不幸的是,我不知道一种在定量范围内处理空值的简便方法。但是您可以在标称范围内自然地处理它们。我可能会使用计算转换在图表规范中生成Null数据集图层,以避免必须构造第二个数据框。它可能看起来像这样:

heatmap = alt.Chart(heatmap_df).mark_rect().encode(
  alt.X("year:O"),alt.Y("state:N"),alt.Color("rate:Q")
)

nulls = heatmap.transform_filter(
  "!isValid(datum.rate)"
).mark_rect(opacity=0.5).encode(
  alt.Color('rate:N',scale=alt.Scale(scheme='greys'))
)

heatmap + nulls

enter image description here

本文链接:https://www.f2er.com/3164781.html

大家都在问