Диапазон цветовой шкалы даты Альтаира обрезается - PullRequest
2 голосов
/ 06 августа 2020

При использовании поля даты для кодирования цвета диапазон цветовой шкалы не охватывает весь диапазон градиента цветовой схемы. Например, это:

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

Notice the color range does not go from yellow to blue, but is cut off at both ends. In contrast, if I use the val field (which is a float) to color, like this:

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

the color bar looks much better:

введите описание изображения здесь

1 Ответ

3 голосов
/ 06 августа 2020

Похоже, это ошибка в 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.

...