Как установить char в качестве меток на оси x? matplotlib

#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. Вы правы, спасибо. Отредактированный ответ, чтобы отразить это