使用日期字段对颜色进行编码时,色阶范围不会跨越整个配色方案渐变范围。例如,这个:
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)
颜色条看起来好多了:
这似乎是 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 问题跟踪器上报告此问题。