Altair 日期色阶范围截止

com*_*nie 3 python altair

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

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

生成此图表:

在此输入图像描述

请注意,颜色范围不是从黄色到蓝色,而是在两端被切断。相反,如果我使用val字段(浮点数)来着色,如下所示:

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

颜色条看起来好多了:

在此输入图像描述

jak*_*vdp 5

这似乎是 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])))
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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