修复altair中0上的缩放Bottom颜色

hgtggwj0  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(267)

我以以下方式生成华夫格图(类似github的活动热图):

import altair as alt
import pandas as pd

# Import data

df = pd.read_csv("https://pastebin.com/raw/AzwJ0va4")

# Year interactive dropdown

years = list(df["year"].unique())
year_dropdown = alt.binding_select(options=years)
selection = alt.selection_single(
    fields=["year"], bind=year_dropdown, name="Year", init={"year": 2020}
)

# Plot

(
    alt.Chart(df)
    .mark_rect()
    .encode(
        x=alt.X("week:O", title="Week"),
        y=alt.Y("day(committed_on):O", title=""),
        color=alt.Color(
            "hash:Q", scale=alt.Scale(range=["transparent", "green"]), title="Commits"
        ),
        tooltip=[
            alt.Tooltip("committed_on", title="Date"),
            alt.Tooltip("day(committed_on)", title="Day"),
            alt.Tooltip("hash", title="Commits"),
        ],
    )
    .add_selection(selection)
    .transform_filter(selection)
    .properties(width=1000, height=200)
)

结果图表现出99%的预期效果,但当我选择一个没有活动的年份时( hash 列填充为0),如2017,情节将填充绿色正方形0锚定在中间的规模。
如何确保0始终位于刻度的底部((透明色)

umuewwlo

umuewwlo1#

您可以设置 domain 与为轴设置颜色比例的方式相同: scale=alt.Scale(range=["transparent", "green"], domain=[0, 16]) . 可以只设置 domainMin 在较新版本的vegalite中,但在altair中尚未出现。在你的例子中,不管怎样,设置最小值和最大值可能是一个好主意,这样颜色在所有年份都被解释为相同的。

相关问题