Альтаир: не сортировка оси - PullRequest
0 голосов
/ 28 июня 2018

Вот простой пример кода, демонстрирующий проблему, которую я хотел бы решить:

import pandas as pd
import altair as alt

categoryNames    = [ 'a', 'f', 'r', 'u', 'p' ]
categories       = pd.Series( categoryNames )
categories.index = categoryNames

amountsRaw       = [ 50, -100, 75, 100, -500 ]
amounts          = pd.Series( amountsRaw )
amounts.index    = categoryNames

df = pd.DataFrame( { "Amounts" : amounts, "Categories" : categories } )

alt.Chart( df ).mark_bar().encode(
    x='Categories',
    y='Amounts',
    color = alt.condition( alt.datum.Amounts > 0, alt.value( 'green' ), alt.value( 'red' ) )
)

Это даст гистограмму, но я не хочу, чтобы категории по оси X были отсортированы. Они должны появляться в том же порядке, что и в массиве categoryNames. Как я могу это сделать?

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете передать список свойству sort кодировки alt.X, чтобы управлять порядком категорий. Например:

alt.Chart(df).mark_bar().encode(
    x=alt.X('Categories', sort=categoryNames),
    y='Amounts',
    color=alt.condition(alt.datum.Amounts > 0, alt.value('green'), alt.value('red'))
)

enter image description here

...