Строки matplotlib как метки по оси x
Я создаю небольшой инструмент для анализа данных, и я подошел к делу, где мне приходится составлять подготовленные данные. Код до этого создает следующие два списка с равной длиной.
t11 = ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55']
t12 = [173, 135, 141, 148, 140, 149, 152, 178, 135, 96, 109, 164, 137, 152, 172, 149, 93, 78, 116, 81, 149, 202, 172, 99, 134, 85, 104, 172, 177, 150, 130, 131, 111, 99, 143, 194]
Исходя из этого, я хочу построить гистограмму с matplotlib.plt.hist. Однако есть несколько проблем:
1. t11 [x] и t12 [x] связаны для всех x. Где t11 [x] - фактически строка. Он представляет собой определенную комбинацию детектора. Например: "01" сообщает, что обнаружение было выполнено в 0-м сегменте первого детектора и 1-м сегменте второго детектора. Моя цель состоит в том, чтобы каждая запись из t11 была помечена как точка на оси x. Запись t12 будет определять высоту полосы над входом t11 (по логарифмической оси y).
Как настроить такую ось x?
2. Это все очень ново для меня. Я не мог найти ничего связанного в документации. Скорее всего потому, что я не знал, что искать. SO: Есть ли "официальное" имя для того, чего я пытаюсь достичь. Это также очень помогло бы мне.
Ответы
Ответ 1
Используйте команду xticks.
import matplotlib.pyplot as plt
t11 = ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15',
'20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35',
'40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55']
t12 = [173, 135, 141, 148, 140, 149, 152, 178, 135, 96, 109, 164, 137, 152,
172, 149, 93, 78, 116, 81, 149, 202, 172, 99, 134, 85, 104, 172, 177,
150, 130, 131, 111, 99, 143, 194]
plt.bar(range(len(t12)), t12, align='center')
plt.xticks(range(len(t12)), t11, size='small')
plt.show()
Ответ 2
Для объектно-ориентированного API matplotlib можно построить собственный текст в x-ticks
axis
со следующим кодом:
x = np.arange(2,10,2)
y = x.copy()
x_ticks_labels = ['jan','feb','mar','apr','may']
fig, ax = plt.subplots(1,1)
ax.plot(x,y)
# Set number of ticks for x-axis
ax.set_xticks(x)
# Set ticks labels for x-axis
ax.set_xticklabels(x_ticks_labels, rotation='vertical', fontsize=18)
![введите описание изображения здесь]()
Ответ 3
В matplotlib lingo вы ищете способ установки пользовательских тиков.
Кажется, вы не можете достичь этого с помощью pyplot.hist
ярлыка. Вам нужно будет создать свое изображение шаг за шагом. На Qaru уже есть ответ на вопрос, который очень похож на ваш, и вы должны начать: Matplotlib - помечать каждый бит
Ответ 4
Во-первых, вам нужно получить доступ к объекту оси:
fig, ax = plt.subplots(1,1)
то
ax.set_yticks([x for x in range(-10,11)])
ax.set_yticklabels( ['{0:2d}'.format(abs(x)) for x in range(-10, 11)])