Альтаир: линейная диаграмма с маркерами штриховых точек - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь создать линейный график с точечными маркерами в Альтаире. Я использую пример многосерийной линейной диаграммы из документации Altair и пытаюсь объединить ее с линейной диаграммой с примером маркеров штриховых точек из документации Vega-Lite.

Меня смущает, как обрабатывать аргумент mark_line. Из примера Vega мне нужно использовать «точку», а затем установить «заполнено» на False.

  "mark": {
    "type": "line",
    "point": {
      "filled": false,
      "fill": "white"
    }
  },

Как бы я применил это на Альтаире? Я понял, что установка 'point' в 'True' или '{}' добавила маркер точки, но не знала, как заставить заливку работать.

source = data.stocks()

alt.Chart(source).mark_line(
    point=True
).encode(
    x='date',
    y='price',
    color='symbol'
)

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вы всегда можете передать необработанный диктат vega-lite любому свойству в Altair:

source = data.stocks()

alt.Chart(source).mark_line(
    point={
      "filled": False,
      "fill": "white"
    }
).encode(
    x='date',
    y='price',
    color='symbol'
)

или вы можете проверить строку документации mark_line() и увидеть, что она ожидает, что точка будет OverlayMarkDef() и используйте Python оболочки:

alt.Chart(source).mark_line(
    point=alt.OverlayMarkDef(filled=False, fill='white')
).encode(
    x='date',
    y='price',
    color='symbol'
)
2 голосов
/ 24 марта 2020

Вы можете передать дополнительную информацию параметру point подобно тому, как указан vega-lite.

import altair as alt
from vega_datasets import data

source = data.stocks()

alt.Chart(source).mark_line(
    point={
      "filled": False,
      "fill": "white"
    }
).encode(
    x='date',
    y='price',
    color='symbol'
)

enter image description here

...