Altair 日期色标范围被切断

Altair date color scale range cuts off

当使用日期字段对颜色进行编码时,色标范围不会跨越整个配色方案渐变范围。例如,这个:

alt.Chart(mydf).mark_point().encode(
    x='date:T',
    y='val:Q',
    color=alt.Color('date:T', scale=alt.Scale(scheme='yellowgreenblue'))
)

生成此图表:

注意颜色范围不是从黄色到蓝色,而是在两端被切断。相反,如果我使用 val 字段(它是一个浮点数)来着色,就像这样:

alt.Chart(mydf).mark_point().encode(
    x='date:T',
    y='val:Q',
    color=alt.Color('val:Q', scale=alt.Scale(scheme='yellowgreenblue'))
)

颜色条看起来好多了:

这似乎是 Vega/Vega-Lite 中的错误;我在别处找不到任何关于它的报道。您可以通过为方案指定 extent 来解决此问题。通常,extent=[0, 1](默认值)表示使用完整的配色方案。通过反复试验,我发现 extent=[-1, 2] 在这种情况下似乎效果很好:

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

mydf = pd.DataFrame({
  'date': pd.date_range('2020-01-01', '2020-06-15', periods=1000),
  'val': abs(np.random.randn(1000))
})

alt.Chart(mydf).mark_point().encode(
    x='date:T',
    y='val:Q',
    color=alt.Color('date:T', scale=alt.Scale(scheme=alt.SchemeParams(name='yellowgreenblue', extent=[-1, 2])))
)

您可以考虑在 Altair 或 Vega-Lite 问题跟踪器上报告此问题。