Построение определенной строки рядом друг с другом

#python #python-3.x #matplotlib

#python #python-3.x #matplotlib

Вопрос:

У меня есть два столбца, позже я хотел бы иметь 3, 4, 5 столбцов, которые я хотел бы построить рядом друг с другом. Для каждого графика столбца будет несколько x-тиков, но все они такие же, как на основном графике, но с разными значениями y-тиков. И я хотел бы построить их рядом друг с другом, а не сложенными.

Мой пример кода

 y_ticks_1 = ['A1', 'A2', 'A3', 'A4'] 
x_ticks_1 = [2.5, 3.5, 4.5, 8.5]
y_ticks_2 = ['A1', 'A3', 'A4']
x_ticks_2 = [3.5, 6, 7.5]
#later on there will be more sets of data

width = 1
y_pos = arrange(len(y_ticks_1))
figure('bar', figsize=(11,5))
barh(y_ticks_1, x_ticks_1, align='edge', alpha=0.5)
barh(y_ticks_2, x_ticks_2, color='r', align='edge', alpha=0.5)
yticks(y_pos   width/2)
xlabel('yield (%)')
  

Но когда я это делаю, это изменяет только длину оси y, и полосы по-прежнему перекрывают друг друга.

Ответ №1:

Я отвечу на ваш конкретный вопрос по двум наборам данных. Вы можете использовать отрицательную высоту для выравнивания полос по обе стороны от отметок.

 y_ticks_1 = ['A1', 'A2', 'A3', 'A4'] 
x_ticks_1 = [2.5, 3.5, 4.5, 8.5]
y_ticks_2 = ['A1', 'A3', 'A4']
x_ticks_2 = [3.5, 6, 7.5]

y_pos = np.arange(len(y_ticks_1) 1)
plt.figure('bar', figsize=(11,5))
plt.barh(y_ticks_1, x_ticks_1, align='edge', height=0.3, alpha=0.5)
plt.barh(y_ticks_2, x_ticks_2, color='r', height=-0.3, align='edge', alpha=0.5)
plt.yticks(y_pos)
plt.xlabel('yield (%)')
  

введите описание изображения здесь

Комментарии:

1. Спасибо! Я чувствую себя таким глупым. Я отредактировал график, поскольку у меня нет горизонтального. Это беспокоит меня уже 1 день. Извините за основной вопрос.

2. @NoobProgrammer: Итак, ваша проблема решена? Или что еще нужно изменить?

3. Это! Я проверю это как ответ, как только смогу 🙂 большое вам спасибо!

4. Спасибо за подсказку, не знал, что это разные вещи, я думал, что это просто ответ, и это было лучше всего. Вы определенно заслуживаете того, чтобы проголосовать