Как можно совместить c функцию geom_col () из библиотеки R ggplot в пакете Python Altair? - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь построить столбчатый график с помощью Altair, однако в Altair нет метода mark_column (). Как я могу использовать c функциональность geom_col (), используя метод Altairs mark_bar ()?

1 Ответ

1 голос
/ 01 августа 2020

Из документов ggplot2 :

Есть два типа столбчатых диаграмм: geom_bar() и geom_col(). geom_bar() делает высоту столбика пропорциональной количеству случаев в каждой группе (или, если указан вес aestheti c, сумме весов). Если вы хотите, чтобы высота столбцов представляла значения в данных, используйте вместо этого geom_col().

Похоже, разница между ними не в метке, а в том, какое значение представляют метки. В Altair значение, представленное меткой, определяется через кодировку.

Таким образом, версия geom_bar() Альтаира может выглядеть примерно так:

data = pd.DataFrame({
  'category': ['A', 'A', 'B', 'B', 'B', 'C']
})

alt.Chart(data).mark_bar().encode(
  x='category:N',
  y='count():Q'
)

или, для geom_bar(), a weight aestheti c,

data = pd.DataFrame({
  'category': ['A', 'A', 'B', 'B', 'B', 'C'],
  'weights': [1, 2, 1, 2, 3, 2]
})

alt.Chart(data).mark_bar().encode(
  x='category:N',
  y='sum(weights):Q'
)

Версия geom_col() Альтаира может выглядеть примерно так:

data = pd.DataFrame({
  'category': ['A', 'B', 'C'],
  'value': [4.1, 6.3, 2.2]
})

alt.Chart(data).mark_bar().encode(
  x='category:N',
  y='value:Q'
)
...