График plotly scatter - сохранить порядок данных по оси x

Рейтинг: 0Ответов: 1Опубликовано: 22.04.2023

Если в параметре (size, color, или symbol) указать колонку 'play' сортирует ось x на графике.

df = pd.DataFrame({'name' : ['name1' , 'name2', 'name3', 'name4', 'name5'],
                     'it1' : [2, 2, 4, 6, 2],
                     'it2' : [2, 4, 4, 1, 4], 
                     'coeff_it' : [0.8, 0.9, 1.5, 1, 1.3],
                     'play' : ['Away', 'Home', 'Away', 'Home', 'Away']})

fig = px.scatter(df, x="opponent", y="it1",  symbol='play',
                 )
fig.show()

Ответы

▲ 0Принят

Ну это такая фича plolty, многими принимаемая за баг. по умолчанию plotly сортирует сет по категориальным данным. но это легко лечится:

import plotly.express as px
import pandas as pd

df = pd.DataFrame({'name' : ['name1' , 'name2', 'name3', 'name4', 'name5'],
                     'it1' : [2, 2, 4, 6, 2],
                     'it2' : [2, 4, 4, 1, 4], 
                     'coeff_it' : [0.8, 0.9, 1.5, 1, 1.3],
                     'play' : ['Away', 'Home', 'Away', 'Home', 'Away']})
fig = px.scatter(df, x="name", y="it1",  symbol='play', color="play")
fig.update_xaxes(categoryorder='category ascending') # указываем явным образом
# порядок оси абсцисс.
fig.show()

введите сюда описание изображения