#python #matplotlib
#python #matplotlib
Вопрос:
У меня есть набор символов, например ['a','a','b','b']
. Когда я рисую их таким образом:
import matplotlib.pyplot as plt
x_labels = ['a','a','b','b']
y = [0,1,2,3]
plt.plot(x_labels,y)
plt.show()
Это то, что я получаю:
Тем не менее, я хотел бы иметь на оси x: a,a,b,b
, а не только a,b
.
Как я могу это сделать?
Ответ №1:
Вы можете использовать фиктивные целые числа, чтобы задать положение точек и обозначить соответствующие галочки в соответствии с вашим x_labels
массивом
import matplotlib.pyplot as plt
x_labels = ['a','a','b','b']
y = [0,1,2,3]
plt.plot(range(len(x_labels)),y)
plt.xticks(range(len(x_labels)), x_labels)
plt.show()
Ответ №2:
Для вас должно сработать следующее:
import matplotlib.pyplot as plt
import numpy as np
x_labels = ['a','a','b','b']
# Create dummy x values, with a value for every label entry
x = np.r_[:len(x_labels)]
y = [0,1,2,3]
plt.scatter(x, y, color='r', marker='x')
# Change the xticks as desired
plt.xticks(x, x_labels)
plt.show()
Этот трюк заключается в том, чтобы установить значения x в виде целых чисел-заполнителей, а затем изменить их метку на любую, какую вы пожелаете.
Это дало мне следующий график, который, я думаю, является тем, что вы хотели:
Комментарии:
1. Вместо захвата оси вы можете использовать
plt.xticks(x, x_labels)
2. Вы правы, спасибо. Отредактированный ответ, чтобы отразить это