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 问题跟踪器上报告此问题。
当使用日期字段对颜色进行编码时,色标范围不会跨越整个配色方案渐变范围。例如,这个:
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 问题跟踪器上报告此问题。