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

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

22.11.2019, 05:26. Показов 3061. Ответов 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
4645 / 2060 / 364
Регистрация: 17.03.2012
Сообщений: 10,141
Записей в блоге: 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
4645 / 2060 / 364
Регистрация: 17.03.2012
Сообщений: 10,141
Записей в блоге: 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
4645 / 2060 / 364
Регистрация: 17.03.2012
Сообщений: 10,141
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Гайд по современным СУБД (небесспорный)
Codd 26.06.2025
Когда я только начинал свой путь в IT как рядовой программист, база данных казалась мне чем-то простым и понятным. Ну, серьезно — это же просто место, где лежат данные, верно? Напиши SELECT * FROM. . .
Использование C# с AWS S3: Примеры с AWS SDK для .NET
stackOverflow 26.06.2025
Amazon S3 (Simple Storage Service) уже давно стал стандартом де-факто в мире облачного хранения данных. Особенно приятно, что для разработчиков . NET предусмотрен отличный SDK, который значительно. . .
Веб-автоматизация с Python и Selenium
AI_Generated 25.06.2025
Selenium с Python — это комбинация, которая выдержала проверку временем. Несмотря на появление новых инструментов вроде Playwright или Puppeteer, связка Python-Selenium остаётся золотым стандартом. . .
CQRS и Event Sourcing на C#
ArchitectMsa 25.06.2025
За последние несколько лет сложность корпоративных приложений выросла в геометрической прогрессии. Простые монолитные системы уступили место распределенным микросервисам, а нагрузка на корпоративные. . .
Хак домофона или как открыть дверь по номеру
yariko 25.06.2025
Забыли дома ключ. Не проблема. Можно открыть дверь домофона, просто позвонив на свой номер квартиры. Идея состоит в следующем. Внутрь трубки абонента встраивается контроллер, который по звонку сам. . .
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »