Алгоритм раскраски DataGridView, чтобы визуально увидеть целое распределение значений ячеек - PullRequest
3 голосов
/ 19 июля 2011

У меня есть матрица чисел. DataGridView используется для его отображения. Мне нужен алгоритм, который для каждой ячейки вычисляет свой BackColor, основываясь на значении ячейки. Поэтому, глядя на DataGridView, я смогу визуально увидеть целое распределение значений. Таким образом, ячейки с близкими значениями будут иметь похожие цвета.

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

Об этом много литературы (например, Tufte , Посуда , Бертин )

По сути, вы должны решить, что выхотите увидеть:

  • Если вы хотите распознать похожие значения, хорошо подойдет цветовая карта (как показано на @belisarius).Глядя на распределение цветов, вы можете легко увидеть: «Хорошо, точка в середине имеет примерно то же значение, что и точка внизу справа».Но, глядя на цвета, вы не можете увидеть, какое значение выше другого или где максимальные / минимальные значения.У оттенка нет интуитивно понятного порядка.
  • Если вы хотите отобразить информацию о заказе, идеально подходит шкала серого.enter image description here

    Здесь вы можете сразу увидеть локальные и глобальные максимальные / минимальные значения.Недостаток: вы можете очень хорошо сравнивать значения яркости, только когда они находятся близко друг к другу.Вы не можете визуально сравнить цвет в центре и цвет внизу справа.На этом основано множество оптических иллюзий.

  • Если вы хотите выделить небольшие различия между соседними ячейками, лучше использовать производную по яркости (аналогично топографическим картам )

Наконец, если вы целевые пользователи, средние мужчины, вам придется подумать о дальтониках.Даже люди, не страдающие дальтонизмом, гораздо лучше сравнивают длины, чем мы - при сравнении цветов.

2 голосов
/ 20 июля 2011

Вы хотите изучить кривую заполнения пространства, пространственный индекс или древовидную карту. Это уменьшает 2d сложность до 1d сложности. Он также используется во многих приложениях тепловых карт и карт. SFC - это структура данных, похожая на quadtree. Вы хотите заглянуть в блог Quadtree, посвященный пространственному индексу кривой Нила. Существует также возможность уменьшить сложность 3d.

2 голосов
/ 19 июля 2011

Найдите максимальное и минимальное значение матрицы и установите для оттенка фона значение

Hue(a(i,j)) = (a(i,j) - min)/(max - min))

Вы можете получить, например, (код в Mathematica, не возражайте, просто в качестве примера):

a = Table[x + Sin[3 x + y^2], {x, -3, 3, 0.1}, {y, -3, 3, 0.1}];
ArrayPlot[a, ColorFunction -> (Hue[(# - min)/(max - min), 1, 1] &)],
             ColorFunctionScaling->False ]

enter image description here

Редактировать

Для справки, 3D-график этой функции

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...