altair - 如何为 mark_rect 显式设置 y 范围(热图)
问题描述
我正在使用 groupby(['Month','Year'] 的输出为许多站点绘制热图
没有值的单元格(月/年)显示为空白——这很好。
“问题”是我希望始终显示全年数据(1 月至 12 月)。但是,对于在一年的开始或结束月份没有任何数据的数据集,绘制数据时不会显示网格的这些部分。当显示的月份较少时,这也会改变单元格的大小。
也就是说,我希望每个情节都具有与以下相同的结构:
而不是减少到这样的事情:
为了保持一致性,我希望每个地块的网格保持不变(第 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'
)
请注意,您必须使用 Vega-Lite 4.9 或更高版本查看此内容,因为早期 vega-lite 版本中存在一个错误,该错误会阻止正确显示值。如果您使用的是 Jupyter notebook,请单击右上角的(⋯)
菜单并选择Open in Vega Editor。
推荐阅读
- azure-eventhub - 是否可以通过 PartitionKey 而不是 PartitionId 配置 Azure 事件中心捕获文件名?
- c++ - 为什么 GLFW 在释放键后会调用键回调函数几秒钟?
- python - 我的 python 打印 trie 函数无法打印 - RecursionError:比较超出最大递归深度
- python - 使用 Python 写入 Excel 中的精确单元格
- azure - 无法解析请求 - MissingJsonReferenceId:使用 PowerShell Az 命令创建 NIC 时出错
- c++ - 从返回抽象类的函数返回 NULL
- python - 位于 MDI 区域中心的 PyQt 用户徽标
- javascript - 将 Google 地方信息搜索限制在坐标或地点周围特定边界内的地方
- javascript - 如何检查 React JS 应用中使用的第三方库的漏洞?
- python - 此站点无法提供安全连接 (heroku)