Я хочу изменить порядок меток по оси x таким образом, чтобы данные также менялись соответствующим образом.
Пример
y = [5,8,9,10]
x = ['a', 'b', 'c', 'd']
plt.plot(y, x)

Как я хочу, чтобы график выглядел, изменяя расположение отметок на оси.
Обратите внимание, что я не хочу этого добиться, изменив порядок своих данных
Моя попытка
# attempt 1
fig, ax =plt.subplots()
plt.plot(y,x)
ax.set_xticklabels(['b', 'c', 'a', 'd'])
# this just overwrites the labels, not what we intended
# attempt2
fig, ax =plt.subplots()
plt.plot(y,x)
locs, labels = plt.xticks()
plt.xticks((1,2,0,3)); # This is essentially showing the location
# of the labels to dsiplay irrespective of the order of the tuple.
Редактировать: Основываясь на комментариях, здесь приведены некоторые дополнительные пояснения.
Скажем, первый пункт (a,5)
на рисунке 1. Если я изменилсямое определение x-axis
такое, что a теперь определено в третьей позиции, затем оно также отражается на графике, что означает, что 5
на y-axis
перемещается с a
, как показано на рис-2.Один из способов добиться этого - переупорядочить данные.Тем не менее, я хотел бы посмотреть, возможно ли это как-то добиться путем изменения расположения осей.Подводя итог, данные должны быть построены на основе того, как мы определяем нашу пользовательскую ось без переупорядочения исходных данных.
Edit2: Исходя из обсуждения в комментариях, это невозможно сделать, просто изменив метки оси.Любой подход будет включать изменение данных.Это было упрощение первоначальной проблемы, с которой я столкнулся.Наконец, использование надписей на основе словаря во фрейме данных pandas помогло мне отсортировать значения осей в определенном порядке, а также убедиться, что их соответствующие значения изменяются соответствующим образом.