Относительный размер маркера на графиках Matlab - PullRequest
6 голосов
/ 08 июня 2011

Я пытаюсь построить матрицу, в которой каждый элемент находится в одном из двух состояний.(ising model ..)

Теперь я бы хотел, чтобы одно состояние было цветным, а другое - белым.Это работает с использованием

[i,j] = find(S);
figure(gcf);
plothandle = scatter(i,j);
axis([0 nNodes+1 0 nNodes+1]);

, когда S удерживает Spins и одно состояние равно 0. (find возвращает матрицу только из ненулевых элементов)

Чтобы получить полезный график,размеры маркеров должны быть 1x1 в относительных координатах.Таким образом, если вся матрица S будет в ненулевом состоянии, все будет окрашено.

Тем не менее, похоже, что Matlab допускает только размер маркера в точках или дюймах.Как я мог решить эту проблему?

Одна идея, которая у меня возникла, заключалась в том, чтобы я узнал размер точек осей и затем мог легко вычислить, насколько большими должны быть мои маркеры.Тогда я должен был бы создать функцию обратного вызова, если я хочу увеличить масштаб и так далее.Кроме того, я еще не нашел способ (без изображения acq. Toolbox) узнать абсолютный размер моих осей.

Чтобы уточнить, что я хочу: Как я мог построить шахматную доску, используя матрицу с 1для черного и 0 для белых полей?

Ответы [ 2 ]

3 голосов
/ 08 июня 2011

Для отображения данных такого рода я обычно предпочитаю IMAGE или IMAGESC до PCOLOR , поскольку PCOLOR не будет отображать последнюю строку и столбец матрицы при использовании фасетного затенения (по умолчанию). Кроме того, IMAGE и IMAGESC переворачивают ось Y, чтобы изображение более интуитивно соответствовало тому, о чем вы думаете, глядя на матрицу (т.е. строки начинаются с 1 на Топ). Вы можете визуализировать свою матрицу так:

S = round(rand(20));       %# Sample 20-by-20 matrix of ones and zeroes
imagesc(S);                %# Plot the image
colormap([1 1 1; 0 0 0]);  %# Set the colormap to show white (zero elements) and
                           %#   black (non-zero elements)

А вот пример изображения:

enter image description here

1 голос
/ 08 июня 2011

Как совет, вы можете попробовать использовать pcolor вместо `scatter '. Пример:

pcolor(hadamard(20))
colormap(gray(2))
axis ij
axis square
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...