#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. Спасибо за подсказку, не знал, что это разные вещи, я думал, что это просто ответ, и это было лучше всего. Вы определенно заслуживаете того, чтобы проголосовать