Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 20.05.2019
Сообщений: 8

Подсчитать количество заполненных ячеек и полос, состоящих из ячеек, на сетчатом графике

22.11.2019, 05:26. Показов 3221. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Возникла проблема с подсчетом заполненных ячеек (если хоть одна точка какого-то конкретного одного цвета попала в конкретную ячейку или горизонтальную/вертикальную полосу ячеек, то она считается заполненной), как бы это примитивно не звучало.

Скажем, что округление, если ровно на линии, в меньшую сторону - налево и вниз. А если на левой или нижней линии, то вправо и вверх (для того, чтоб не терять совсем эти точки).

Проблема в том, что не могу нормально прописать цикл, который бы двигался по промежуткам и переходил бы на следующий, добавляя единичку к счетчику, как только видел бы, что полоса/ячейка уже заполнена.

И еще - реально ли вообще это отображать как-то? То есть, если в полосе есть точка, то вся полоса закрашивается этим цветом низкой прозрачности. Или если для ячейки, то если в ней есть точка, то ячейка делает то же самое.

Прошу помощи с этими вопросами.
Внизу код (на всякий случай), который выдает эту картинку, по которой собственно и нужно посчитать это количество полос/ячеек.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import numpy as np
import matplotlib.pyplot as plt
 
# Получение точек (неважная часть)
 
Matrix = np.array([[4, 3, 4, -2], [3, 5, -14, 8], [-8, 0, 9, 3], [3, 2, 1, 2], [5, 4, 8, 1]])
 
print("Matrix")
print(Matrix, "\n")
m, n = Matrix.shape
Matrix = np.transpose(Matrix)
 
Normal_x = np.empty((n-1, m))
for i in range(n-1):
    Normal_x[i] = (Matrix[i] - min(Matrix[i])) / (max(Matrix[i]) - min(Matrix[i]))
Normal_y = (Matrix[n-1] - min(Matrix[n-1])) / (max(Matrix[n-1]) - min(Matrix[n-1]))
 
# Построение собственно графика
 
for i in range(n-1):
    plt.scatter(Normal_x[i], Normal_y, label = ("x", i))
plt.grid(color = 'black', linestyle = '-', linewidth = 0.5)
plt.legend()
plt.show()
 
Nx = np.empty(n-1)
Nxy = np.empty(n-1)
 
# Правильные результаты после ручного подсчета. 
# Для проверки и вообще, чтоб было понятнее какая цель у этого всего.
 
# Ny = 4           # количество заполненных горизонтальных полос (для всех цветов сразу)
# Nx[0] = 1      # количество заполненных вертикальных полос синими точками
# Nxy[0] = 3     # количество заполненных ячеек синими точками
# Nx[1] = 5      # количество заполненных вертикальных полос оранжевыми точками
# Nxy[1] = 5     # количество заполненных ячеек оранжевыми точками
# Nx[2] = 3      # количество заполненных вертикальных полос зелеными точками
# Nxy[2] = 5     # количество заполненных ячеек зелеными точками
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2019, 05:26
Ответы с готовыми решениями:

Подсчитать количество заполненных ячеек диапазона со значениями, большими, чем единица
Народ, помогите поправить следующий код: Cells(8 + A4444, i + 108) = WorksheetFunction.Count(Range(Cells(7, i + 108), Cells(6 + A4444, i...

Подсчитать количество пустых, текстовых ячеек и числовых ячеек
люди нужна ваша помощь, ничего толком в этом не понимаю(: Ввести координаты ячейки и определить относительно нее текущий регион...

Задать максимальное количество заполненных ячеек в строке
Как задать свое количество заполненных ячеек в строке, чтобы заполнение ячеек символами автоматически переходило на следующую строку?

5
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
22.11.2019, 11:04
FotLf, а в чём проблема с циклом-то?
Для начала - у вас промежутки там одинаковые или нет? Если одинаковые, даже цикл не нужен, просто делите.
Цитата Сообщение от FotLf Посмотреть сообщение
И еще - реально ли вообще это отображать как-то? То есть, если в полосе есть точка, то вся полоса закрашивается этим цветом низкой прозрачности.
Нарисовать прямоугольник на графике?

Добавлено через 46 секунд
FotLf, и ещё - избавьтесь от глобальных переменных. Будет легче жить, иначе запутаетесь.
0
0 / 0 / 0
Регистрация: 20.05.2019
Сообщений: 8
23.11.2019, 21:43  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
а в чём проблема с циклом-то?
Для начала - у вас промежутки там одинаковые или нет? Если одинаковые, даже цикл не нужен, просто делите.
Смысл в том, что цикл нужен - иногда нужно разное количество промежутков (а так, да, между собой они одинаковые), поэтому перечислить все вручную не подходит.

Цитата Сообщение от dondublon Посмотреть сообщение
Нарисовать прямоугольник на графике?
Да, можно и так сказать, просто, чтоб он соответствовал линиям деления как-то.

Цитата Сообщение от dondublon Посмотреть сообщение
и ещё - избавьтесь от глобальных переменных. Будет легче жить, иначе запутаетесь.
Один раз можно)) Больше-то нигде этот код не используется, а если и будет, то как функцию его перепишу.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
25.11.2019, 10:55
Лучший ответ Сообщение было отмечено FotLf как решение

Решение

Цитата Сообщение от FotLf Посмотреть сообщение
Смысл в том, что цикл нужен - иногда нужно разное количество промежутков (а так, да, между собой они одинаковые), поэтому перечислить все вручную не подходит
Хорошо, тогда перебрать попарно, в списке?

По остальному - ок.
1
0 / 0 / 0
Регистрация: 20.05.2019
Сообщений: 8
26.11.2019, 00:29  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Хорошо, тогда перебрать попарно, в списке?
По остальному - ок.
Проверять перебором ячейка-точка то можно, но когда я так делала, сбивался счетчик(ну, то есть он продолжал плюсовать), а если создать матрицу, которая будет соответствовать сетке графика, и заполнять ее единичками, а потом уже проводить подсчет, то всплывает вопрос как создать связь между сеткой графика и элементами матрицы - типо чтобы если единичка, то не плюсовать, а если нолик, то сменить его на единичку, и ++ счетчик.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
26.11.2019, 09:50
Цитата Сообщение от FotLf Посмотреть сообщение
Проверять перебором ячейка-точка то можно, но когда я так делала, сбивался счетчик(ну, то есть он продолжал плюсовать), а если создать матрицу, которая будет соответствовать сетке графика, и заполнять ее единичками, а потом уже проводить подсчет, то всплывает вопрос как создать связь между сеткой графика и элементами матрицы - типо чтобы если единичка, то не плюсовать, а если нолик, то сменить его на единичку, и ++ счетчик.
Ничего не понял. Можно элементарный пример?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.11.2019, 09:50
Помогаю со студенческими работами здесь

Определить количество заполненных ячеек в строке Excel
Подскажите пожалуйста. Есть код который определяет количество заполненных строк на листе: Book.Worksheets(1).UsedRange.Rows.Count ...

Определить количество информационных ячеек, проверочных ячеек и всего ячеек
В груповой код внесена двукратная ошибка. Передается 128 сообщений. Определить количество информационных ячеек, проверочных ячеек и всего...

Как посчитать количество заполненных ячеек в определённом столбце DGV
как посчитать количество заполненных ячеек в определённом столбце?

Как при суммировании ячеек произвести деление на количество не пустых ячеек
Всем добрый вечер. Допустим есть ряд не пустых ячеек А1-А10, и нужно найти среднее значение. Берем сумму и делим на 10. Нужно сделать...

Установите для диапазона ячеек B6:B8 числовой формат ячеек с количество десятичных знаков равным 2
Здравствуйте, нужна помощь в excel. Я все выполнил но здесь уже никак не смог решить. Помогите пожалуйста! Вот само задание которое нужно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru