gpt4 book ai didi

altair - 如何为 mark_rect(热图)显式设置 y 范围

转载 作者:行者123 更新时间:2023-12-04 10:02:38 26 4
gpt4 key购买 nike

我正在使用 groupby(['Month','Year'] 的输出为许多站点绘制热图

没有值的单元格(月/年)显示为空白 - 这很好。

“问题”是我希望始终显示全年的数据(1 月至 12 月)。但是,对于在一年的开始或结束月份没有任何数据的数据集,绘制数据时不显示网格的这些部分。当显示较少的月份时,这也会更改单元格的大小。

也就是说,我希望每个图都具有与以下相同的结构:

enter image description here

而不是减少到这样的事情:

enter image description here

为了保持一致性,我希望每个图的网格保持不变(1-12 个月),即使它在顶部(年初)或底部(年末)留下空白空间。

我尝试设置 mark_rect 描述中列出的“y”和“y2”参数,以强制它始终显示 1-12 的 y 范围,但没有效果。

最佳答案

您可以指定一个包含要显示的值的比例域(从 1 到 12 的月份):

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

np.random.seed(0)
df = pd.DataFrame({
'date': pd.date_range('2010-01-01', periods=120, freq='M'),
'value': np.random.rand(120),
})
df = df[(df.value > 0.3) & (df.date.dt.month < 8)]

alt.Chart(df).mark_rect().encode(
x='year(date):O',
y=alt.Y('month(date):O', scale=alt.Scale(domain=list(range(1, 13)))),
color='value:Q'
)

enter image description here

请注意,您必须使用 Vega-Lite 4.9 或更高版本查看此内容,因为早期 vega-lite 版本中存在一个错误,该错误会阻止正确显示值。如果您使用的是 Jupyter 笔记本,请单击 (⋯)菜单,然后选择在 Vega Editor 中打开。

关于altair - 如何为 mark_rect(热图)显式设置 y 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61753877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com