Создание корреляционного графика в Matlab

Я пытаюсь эмулировать этот график:enter image description here

Если у меня есть корреляционная матрица, как я могу создать такой вывод?

3 ответов


если у вас есть n x n матрица корреляций M, и вектор L длиной n содержащ ярлык для каждого ящика, вы можете использовать что-то вроде следующего:

imagesc(M); % plot the matrix
set(gca, 'XTick', 1:n); % center x-axis ticks on bins
set(gca, 'YTick', 1:n); % center y-axis ticks on bins
set(gca, 'XTickLabel', L); % set x-axis labels
set(gca, 'YTickLabel', L); % set y-axis labels
title('Your Title Here', 'FontSize', 14); % set title
colormap('jet'); % set the colorscheme
colorbar on; % enable colorbar

вращение меток оси x не является тривиальным, но Центральный файловый обмен MATLAB содержит некоторые решения.


добавив к ответу @Thomas C. G., Я бы использовал:

imagesc(myMatrix);
colormap(jet);
colorbar;

% then to set the axis titles you'll have to use
% Please note the curly braces for the cell array
labelNames = {'USA','NASDAQ','Dow Jones'};
set(gca,'XTickLabel',labelNames);   % gca gets the current axis
set(gca,'YTickLabel'labelNames);   % gca gets the current axis

к сожалению, AFAIK, делая текстовые метки вертикальными, как они есть на вашем рисунке немного сложнее. Может быть, кто-то другой знает об обратном.


чтобы построить матрицу как изображение, вам просто нужно вызвать две функции:

image(myMatrix)
colormap(jet)

на цвета функция определяет цветовой шаблон, используемый для отображения изображения. Изображение, которое вы разместили, использует цветовую карту "jet".

и для отображения цветовой шкалы рядом с изображением используйте colorbar