Python 您能为“添加标签”吗;“缺少数据”;给牛郎星图表的图例?

Python 您能为“添加标签”吗;“缺少数据”;给牛郎星图表的图例?,python,legend,altair,Python,Legend,Altair,我有一张使用Altair绘制的热图,其中包括一个颜色条,但是热图中缺少的数据(空白/白色)没有标记在颜色条上。是否有办法在图例中添加单独的标签(例如,在颜色栏下方),以显示图表中缺失的数据是如何表示的 我提出了一个解决方案,在我的图表顶部包含一个“重影”层——一个大小为0的标尺图表(因此线条是不可见的),它由一个填充了字符串值“无数据”的列着色(请参见下面的代码)。这将强制一个传奇项目,但我想知道是否有更好的方法。 (请参阅此处链接中的完整示例:) 将numpy导入为np 将牵牛星导入为alt

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

我提出了一个解决方案,在我的图表顶部包含一个“重影”层——一个大小为0的标尺图表(因此线条是不可见的),它由一个填充了字符串值“无数据”的列着色(请参见下面的代码)。这将强制一个传奇项目,但我想知道是否有更好的方法。 (请参阅此处链接中的完整示例:)

将numpy导入为np
将牵牛星导入为alt
作为pd进口熊猫
#热图数据示例
heatmap_df=pd.数据帧([[“纽约”,1999,1],“纽约”,2000年,新南威尔士州],“马”,1999年,新南威尔士州],“马”,2000,4]],列=[“州”,“年”,“率”])
#图例数据帧示例
图例编号数据=pd.DataFrame([[1999,“无数据”]],列=[“年”,“文本”])
#带有“无数据”标签的示例图表
heatmap=alt.Chart(heatmap\u df).mark\u rect().encode(alt.X(“年份:O”)、alt.Y(“状态:N”)、alt.Color(“速率:Q”))
#“无数据”图例项的图表
vacc_图例_no_data=alt.Chart(图例_no_data)。标记线(
大小=0
).编码(
年份:O,,
color=alt.color(“text:N”,legend=alt.legend(title=”,symbolType=“square”))
热图+真空图例无数据

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

不幸的是,我不知道在定量尺度内处理空值的简单方法。但你可以在标称范围内自然处理它们;我可能会使用计算转换在图表规范中生成空数据集层,以避免构建第二个数据帧。它可能看起来像这样:

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

看起来比我的好!我很感激你的回答。