2012-04-30 7 views
8

Ich versuche, diese Grafik zu emulieren: enter image description herein Matlab

Wenn ich eine Korrelationsmatrix haben, wie kann ich eine Ausgabe wie diese erstellen?

+1

Sieht aus wie Ausgabe des Befehls imagesc – bdecaf

Antwort

6

Wenn Sie eine n x n Korrelationsmatrix M haben, und einen Vektor L der Länge n das Etikett für jeden Behälter enthält, man etwa wie folgt verwendet werden:

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 

Rotierende x-Achsen-Etiketten ist nicht trivial , aber der MATLAB Central File Exchange enthält some solutions.

+0

Für die x-Achsen-Etikettendrehung können Sie dies einfach über das Matlab-Figurenfenster tun: 1. Wählen Sie * show plot tools and dock figures * aus der Werkzeugleiste, https: //i.stack .imgur.com/lmiz1.png 2. Klicken Sie auf X-Achsenbeschriftungen auf Abbildung https://i.stack.imgur.com/63oKg.png 3. Wählen Sie * mehr Eigenschaften ... * aus dem erscheinenden Fenster https://i.stack.imgur.com/o8NRm.png 4. Navigiere zu * XTickLabelRotation * und setze es auf 90.0 https://i.stack.imgur.com/FHjz7.png – user1323163

1

Um eine Matrix als ein Bild zeichnen Sie nur zwei Funktionen aufrufen müssen:

image(myMatrix) 
colormap(jet) 

Die colormap Funktion die Farbmuster definiert verwendet, um das Bild zu machen. Das Bild, das Sie gepostet haben, verwendet die "Jet" Colormap.

Und um die Farbskala neben dem Bild anzuzeigen, verwenden Sie die colorbar Funktion.

2

Hinzufügen zu @Thomas C. G. Antwort, würde ich verwenden:

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 

Leider AFAIK, so dass der Text vertikale Etiketten, wie sie in Ihrer Figur is a bit harder sind. Vielleicht hat jemand anders das Gegenteil.