Относительный размер разметки на графиках Matlab

#matlab #plot

#matlab #график

Вопрос:

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

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

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

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

Чтобы иметь полезный график, размеры маркеров должны быть 1×1 в ОТНОСИТЕЛЬНЫХ координатах. Итак, если бы вся матрица S находилась в ненулевом состоянии, все было бы окрашено.

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

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

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

Ответ №1:

Для отображения данных такого рода я обычно предпочитаю 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)
  

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

введите описание изображения здесь

Ответ №2:

Просто в качестве предложения вы можете попробовать использовать pcolor вместо примера `scatter’:

 pcolor(hadamard(20))
colormap(gray(2))
axis ij
axis square