Altair日期颜色比例尺范围截断

3

当使用日期字段编码颜色时,颜色比例尺的范围并不涵盖整个颜色渐变范围。例如:

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

生成这张图表:

enter image description here

需要注意的是颜色范围并没有从黄色到蓝色,而是在两端被截断了。相反,如果我使用val字段(一个浮点数)来着色,就像这样:

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

色条看起来好多了:

输入图片描述

1个回答

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])))
)

在这里输入图像描述

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


我应该报告这个问题吗?您有什么意见? - eba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接