Давайте возьмем этот фрагмент Python:
import matplotlib.pyplot as plt
x = [5,4,3,2,1,0]
x_strings = ['5','4','3','2','1','0']
y = [0,1,2,3,4,5]
plt.figure()
plt.subplot(311)
plt.plot(x, y, marker='o')
plt.subplot(312)
plt.plot(x_strings, y, marker='^', color='red')
plt.subplot(313)
plt.plot(x, y, marker='^', color='red')
plt.gca().invert_xaxis()
plt.show()
, который создает три следующих субплота:

В верхнем субплотеx
значения автоматически сортируются все чаще, несмотря на их порядок в данном списке.Если я хочу построить x
против y
точно в заданном порядке x
, тогда у меня есть две возможности:
1) Преобразовать значения x в строки и получить категоричный график - этосредний субплот.
2) Инвертировать ось X - это нижний субплот.
Вопрос: есть ли другой способ сделать своего рода категориальный график, но без преобразования чиселв строки и без инверсии оси x?
ADD-ON:
Если я использую set_xticklabels(list)
, то по какой-то непонятной причине первый элемент всписок пропущен (неважно, ссылаюсь ли я на x
или на x_strings
список), и результирующий сюжет также совершенно странный:
import matplotlib.pyplot as plt
x = [5,4,3,2,1,0]
x_strings = ['5','4','3','2','1','0']
y = [0,1,2,3,4,5]
fig, ax = plt.subplots()
ax.set_xticklabels(x)
ax.plot(x, y, marker='^', color='red')
plt.show()
