|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||||||||||
Рисование heatmap (упростить код)15.07.2022, 17:11. Показов 1839. Ответов 18
Добрый день!
Есть набор данных размером 500 на 200 (сделал просто случайные):
Вопрос: хорошо когда картинка 500 на 200, а не 5000 на 2000 =) как сделать быстрее? (цветовая гамма не важна) Код: Кликните здесь для просмотра всего текста
Добавлено через 2 минуты PS. У меня есть мысль, что на основе data можно сделать heatmap через plotly (или чем-то похожим), но никак не получается получить результат идентичный моему коду, т.е. картинку 500 на 200...
0
|
|||||||||||
| 15.07.2022, 17:11 | |
|
Ответы с готовыми решениями:
18
Инвертировать цвета в pandas heatmap
Heatmap на gnuplot |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 15.07.2022, 17:47 | |
|
Не проще в поисковике набрать типа heatmap python example?
Выпало такое https://seaborn.pydata.org/gen... atmap.html
1
|
|
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||
| 15.07.2022, 20:46 [ТС] | |||
|
Если кто-то сможет сделать по этим данным, что бы на выходе сохранялось изображение аналогичное коду выше, через что-то еще, то я буду очень благодарен)
0
|
|||
|
Просто Лис
|
|
| 16.07.2022, 08:40 | |
|
Не по теме: Downloading PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-abi3-manylinux1_x86_64.whl (164.3 MB) Добавлено через 1 минуту Не проще картинку в png нарисовать?
0
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
|||||||||||
| 16.07.2022, 09:20 | |||||||||||
Сообщение было отмечено Рыжий Лис как решение
Решение
Михалыч, попробуйте что-то такое:
Кстати, палитру можно не забивать в программу, а хранить в виде png файла, размером nx1 пиксель, где n -число цветов. Добавлено через 15 минут Михалыч, еще особенность: для x<=0 - palette[0], для 0<x<=0.1 - palette[1] и т. д. Если ваши данные не лежат в диапазоне 0..1, то нужно произвести их шкалирование (MinMax scaler). Или менять bins на нужные вам. для тестов можно так проверять что все нормально, а не random
2
|
|||||||||||
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|
| 16.07.2022, 22:31 [ТС] | |
|
u235, благодарю, очень элегантное решение
![]()
1
|
|
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
||||||
| 17.07.2022, 06:38 [ТС] | ||||||
Сообщение было отмечено u235 как решение
Решение
Для себя (через QImage):
1
|
||||||
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
||
| 17.07.2022, 06:56 | ||
|
Михалыч, если в 13 строке перед закрывающейся скобкой добавить , dtype='uint8' , то 36 строка будет не нужна и сэкономится память.
Добавлено через 7 минут Михалыч, а, все понял, у вас раньше с палитра с прозрачностью была, а сейчас без. Не обратил внимание.
1
|
||
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||
| 17.07.2022, 07:13 [ТС] | |||
|
Спасибо!)
![]() А вектор копания я понял)Вы мне и так уже времени сэкономили первоначальный вариант на картинках с которыми работаю занимал 10-15 минут и ладно заказчик не требовательный (самому себе предъявлять же не будешь , работает и уже хорошо).
0
|
|||
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
||||||
| 17.07.2022, 09:05 | ||||||
|
Вот с прозрачностью :
Кликните здесь для просмотра всего текста
Qpixmap сохраняется без прозрачности, а QImage - с прозрачностью. И пришлось одной строчкой переставить каналы в палитре. Еще, если вы зараннее приведете ваши данные float к диапазону 0-255 в uint8 (картинке в оттенках серого), то дальше можно очень быстро применить палитру. Операция называется color look up table (CLUT). см., например в ImageMagick https://imagemagick.org/Usage/color_mods/#clut или в OpenCV cv.LUT(). Успехов вам!
1
|
||||||
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||
| 17.07.2022, 16:45 [ТС] | |||
0
|
|||
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
||||||
| 22.08.2022, 21:27 | ||||||
|
Михалыч, продолжаем ускорять
![]()
1
|
||||||
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
||
| 23.08.2022, 15:29 [ТС] | ||
(я обычно сидел и ждал когда посчитает)Добавлено через 1 час 16 минут u235, спасибо!) Придется осваивать opencv
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 24.08.2022, 08:59 | |
|
В приличных мат пакетах тепловая карта строиться одной строкой. Видимо тут еще не эволюционировали до этого. Вообще если нужна скорость то это не к питону т.к. интерпретируемые языки не для этого. Наверняка есть код расчета этого на видеокарте практически в реальном времени. Еще вроде есть компиляция кода.
1
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
||||||||||||||||||||||
| 24.08.2022, 19:05 | ||||||||||||||||||||||
|
Для стандартных палитр действительно можно одной строкой типа:
Михалыч, если у вас bins и palette не меняются, то можно сохранить палитру в png (добавить в конце строку):
если это не так, то надо использовать другой тип нормализации. Добавлено через 8 минут P.S.S. у меня было 0.15 сек, стало 0.10 сек это процесс расчета heatmap без генерации тестовых данных и сохранения результата.
1
|
||||||||||||||||||||||
|
|
|||
| 25.08.2022, 11:02 | |||
|
1
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 25.08.2022, 11:07 | |
|
Если нужна скорость берут уже компилируемый язык типа С++.
Если нужно еще больше скорость то уже спец язык шейдеры и GPU.
0
|
|
|
|
||
| 25.08.2022, 11:38 | ||
|
Excalibur921, numpy - это и есть С++, легко подключаемый к питону. Большую часть типичных операций он вполне вытягивает, по логике. Ну и другие либы, в которых тоже внутри С++ (scipy etc.). Если он с чем-то не справляется - тогда уж имеет смысл наваять что-то самописное на С++, но это довольно редко может понадобится. Конечно, зависит от задач. Поверьте, я достаточно позанимался числодробилками на питоне, чтобы так утверждать.
1
|
||
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||
| 25.08.2022, 12:49 [ТС] | |||
![]() Я конечно не занимался много "числодробилками на питоне" как dondublon, но в моем случае в большинстве случаев скорость работы моих программ зависит не от выбора языка или пр., скорее от неверного алгоритма и не рационального применения/не применения библиотек python. Пока мне помогает выложить свой код на суд более опытных товарищей, это быстрее чем выучить C++ ![]()
0
|
|||
| 25.08.2022, 12:49 | |
|
Помогаю со студенческими работами здесь
19
Карты Heatmap Библиотека plotly, heatmap Pandas. Dataframe. sns.heatmap - Отрисовка результата
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|