У меня есть следующий график -
Я хотел бы иметь возможность сортировать столбцы (НЕ отдельные столбцы одной группы - я знаю, как это сделать это уже), то есть закажите 3 вложенную диаграмму - если хотите - на основе значения любой категории (a
, b
или c
), которую я выберу.
Я пытался использовать alt.SortField
и alt.EncodeSortField
, они немного перемещаются по графикам, но на самом деле не работают, если вы измените категорию, чтобы посмотреть, действительно ли они работают.
Код -
import altair as alt
import pandas as pd
dummy = pd.DataFrame({'place':['Asia', 'Antarctica','Africa', 'Antarctica', 'Asia', 'Africa', 'Africa','Antarctica', 'Asia'],'category':['a','a','a','b','b','b','c','c','c'],'value':[5,2,3,4,3,5,6,9,5]})
alt.Chart(dummy).mark_bar().encode(
x=alt.X('category'),
y='value',
column=alt.Column('place:N', sort=alt.SortField(field='value', order='descending')),
color='category',
)
Я знаю, что alt.Column('place:N', sort=alt.SortField(field='value', order='descending')),
не кажется правильным, так как я не нацеливаюсь на какую-либо категорию, поэтому я тоже попробовал x=alt.X('category', sort=alt.SortField(field='c', order='descending')),
, но он тоже не работает.
Ожидаемый результат (в порядке убывания) -
- Если я хочу упорядочить по 'c', то сначала следует средний столбец, затем левый и, наконец, правый столбец.
- Кажется, он уже упорядочен по 'b'.
- Если я хочу упорядочить по 'a', то правый столбец должен быть первым, за которым следуют левый и, наконец, средний столбец.