Я хотел бы изменить порядок граней диаграммы Альтаира на основе статистики некоторых групп, такой как среднее, сигма и т. Д.
В некоторых случаях функция упорядочения может быть более сложной, например,как дельта между двумя скользящими средними, наклоном EWMA и т. д., поэтому я также хотел бы иметь возможность «проходить» в порядке, если это возможно.
Вот код тестируемого случая:
import pandas as pd
import numpy as np
import altair as alt
alt.renderers.enable('notebook')
# make some data to test
N = 500
df = pd.DataFrame({
'Date Time': pd.date_range('2019-06-19', periods=N, freq='H'),
'A': np.random.normal(6, 1, N),
'B': np.random.normal(5, 1, N),
'C': np.random.normal(7, 1, N),
'D': np.random.normal(8, 1, N)
}).melt('Date Time')
# render the chart using facets
p = alt.Chart(df).mark_point().encode(
facet='variable',
y='value',
x='Date Time',
color='variable',
)
# set some aditional properties
p.properties(width=230, height=150, columns=3).resolve_scale()
, который создает эту диаграмму, где грани сортируются в алфавитном порядке:
Я бы хотел, чтобы порядок сортировки был от среднего к наименьшему:
var_order = df.groupby('variable').mean().sort_values('variable', ascending=False).index.values
var_order
, который производит:
array(['D', 'C', 'B', 'A'], dtype=object)
Я прочитал некоторые посты, которые указывают, что сортировка по x и y возможна, но это тот случай, когда я хотел бы отсортировать сами грани.