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

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

22.11.2019, 05:26. Показов 3166. Ответов 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,181
Записей в блоге: 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,181
Записей в блоге: 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,181
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru