Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.02.2023
Сообщений: 9

Python matplotlib barh с аргументом left

30.12.2023, 20:38. Показов 1293. Ответов 6

Студворк — интернет-сервис помощи студентам
Хочу построить multi barh в matplotlib, но у меня значения накладываются поверх друг друга.
Python
1
2
3
4
5
6
7
8
9
10
from matplotlib import pyplot as plt 
 
act_weight = [21879, 1132, 2034, 2547, 3879]  #кол-во времени в секундах
height = 5  #высота графика
for i in range(len(act_weight)):
    height -= 0.3  #с каждой итерацией уменьшаю высоту, чтобы было наглядно видно, что графики накладываются
    plt.barh(1, act_weight[0], height, label=f'Значения {i}', left=None if i == 0 else act_weight[i - 1])  #y = 1
 
plt.legend()
plt.show()
По документации и по туториалам на ютубе прописываю свойства правильно. Но в этих 2х случаях используются именно массивы:
Python
1
2
act_weight1 = [12, 34, 53]
act_weight2 = [54, 23, 77]
и подставляются в barh. Но тогда получается, что график barh не 1, а несколько. А мне нужно, чтобы была просто 1 полоса и значения act_weight накладывались друг за другом, а не хаотично.
Миниатюры
Python matplotlib barh с аргументом left  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.12.2023, 20:38
Ответы с готовыми решениями:

Matplotlib в python
Всем привет, хочу задать такой вопрос как с помощью matplotlib можно получить следующий результат как на картинке, я не могу понять как...

Python matplotlib
Подкиньте идею, как вывести картинку по точкам в python, используя matplotlib. Готовый и рабочий код: import numpy as np import...

Matplotlib python 3.5
Установил matplotlib win 64 для python 3.5 при наборе простого кода: import matplotlib.pyplot as plt plt.plot() plt.ylabel('some...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.12.2023, 21:37
Три раза перечитал и так и не понял - чего в итоге добиться нужно.
No_name131, выложи примерную картинку требуемого
0
0 / 0 / 0
Регистрация: 09.02.2023
Сообщений: 9
30.12.2023, 21:42  [ТС]
Нужно чтобы параметр left работал правильно. На картинке цвета накладывается друг на друга, а мне хотелось бы, чтобы после окончания синего цвета шел зеленый. После окончания зеленого - красный, и тд.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.12.2023, 21:43
Все равно не понял. Найди в интернете подходящую картинку и выложи сюда

Добавлено через 15 секунд
Или в пейнте нарисуй
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
31.12.2023, 15:23
stacked bars? https://matplotlib.org/stable/... acked.html
0
0 / 0 / 0
Регистрация: 09.02.2023
Сообщений: 9
01.01.2024, 19:06  [ТС]
Stacked barh. Ок, давайте покажу на реальном примере, и с чем я столкнулся.
У меня есть бд, где хранится вся информация об активности и проведенном времени в секундах (скриншот). Из бд данные об времени передаются в список:
Python
1
2
3
4
5
6
7
activities = s_rows()  ##[(1, 'python', 'red', 100), (2, 'books', 'yellow', 126)]
activities_correct = []
for i in activities:
    if not i[3] == 0:  
        activities_correct.append(i)
activities = activities_correct
act_weight = [act[3] for act in activities]
Если активность нулевая, то она не будет участвовать в построении графика.
Дальше идет построение barh.
Python
1
2
3
4
5
6
def barh():
    plt.barh(0, sum(act_weight), color='blue', height=0.6)  # нижняя синяя линия показывает общее затраченное время
    for i in range(0, len(act_weight)):
        plt.barh(1, act_weight[i], color=act_colors[i], height=(1.25 + i ), left=None if i == 0 else act_weight[i - 1])
 
    plt.show()
С каждой итерацией высота - height увеличивается (для наглядного примера, что аргумент left накладывает не с края, а по середине). Но я приложу скриншот с статичной высотой.
И вопрос заключается в том, почему у меня 2 графика (верхняя и нижняя линия) не совпадают, хотя имеют одинаковый параметр ширины sum(act_weight) и act_weight[i] (при прохождении цикла) и как построить график так, чтобы ширина была одинаковой?
Миниатюры
Python matplotlib barh с аргументом left   Python matplotlib barh с аргументом left   Python matplotlib barh с аргументом left  

0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
01.01.2024, 19:16
Лучший ответ Сообщение было отмечено No_name131 как решение

Решение

По ссылке выше так:

Python
1
2
3
4
5
6
7
8
def barh():
    # нижняя синяя линия показывает общее затраченное время
    plt.barh(0, sum(act_weight), color='blue', height=0.6)
    left = 0
    for i in range(0, len(act_weight)):
        plt.barh(1, act_weight[i], color=act_colors[i], left=left)
        left += act_weight[i]
    plt.show()
Кумулятивная сумма же.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.01.2024, 19:16
Помогаю со студенческими работами здесь

Python и Matplotlib
Здравствуйте. Изучаю Matplotlib и полярные координаты столкнулся со странной вещью Matplotlib выплюнул только конечное значение, а не...

GUI Python with Matplotlib
Самостоятельно изучаю питон в рамках своих университетских предметов ( специальность прикладная математика). По-этому использую...

Python | Библиотека matplotlib
Доброго всем вечера. Есть следующий вопрос: имеется два изображения image1 и image2. Как средствами библиотеки matplotlib сделать так,...

Нарисовать фигуру на python,matplotlib
Нарисовать фигуру в Python. Цель работы: овладение навыками создания параллельных и центральных проекций

Python. Matplotlib, графики и множества
Есть следующее задание по дискретной математике: Пусть A, B и C — множества точек плоскости, координаты которых удовлетворяют...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru