Friday, November 9, 2007

carpet plots with matlab



if you are planning to plot some data as carpet plot, you can use matlab. there is a simple trick to do that.

in this example, i create a carpet plot for a 35040 vector.
first, i convert the data into a 365x96 matrix. then i plot it using the surf command, and change the view point with "view(0,90)"
that's all!
here the function:



function carpetplot(data,FigNr,colormap)



max_zeilen = 24*4;
zeile=1;
spalte=1;
i=1;
while spalte <= 365,
while zeile <= max_zeilen,
DATA(zeile,spalte)=data(i);
zeile=zeile+1;
i=i+1;
end
spalte=spalte+1;
zeile=1;
end


x=[1:1:365];
y=[0:(1/(4)):24-1/(4)];
figure(FigNr)
clf
axes1 = axes(...
'FontSize',16,...
'LineWidth',1,...
'Box','on',...
'Parent',figure(FigNr));%,...
% 'CLim',[-20000 -5000]);
xlabel(axes1,'Tag im Jahr');
ylabel(axes1,'Uhrzeit');
grid(axes1,'off');
hold(axes1,'all');




set(gca,'XLim',([1 365]),'YLim',([0 (24-1/(4*60))]))%,'ZLim',([-20000 -5000]))

surf(x,y,DATA,'EdgeColor','none',...
'LineWidth',1,'Parent',axes1);
view(0,90)



colorbar1 = colorbar('peer',...
axes1,'EastOutside',...
'Box','on',...
'FontSize',16,...
'XLim',[-0.5 1.5], 'YLim', [-20000 -5000],...
'CLim',[0 6]);


%load('MyColormaps','mycmap')
set(figure(FigNr),'Colormap',colormap)

% set(axes1,'CLim', [0 4])
take a look to the part 2 of the carpet plot function

2 comments:

Leg said...

hi, if you whant to see how the carpet plot looks like, try this:

Rasterdiagram at Wikipedia

note: the carpet plot (in german Rasterdiagramm) in this article in wikipedia was done with this script

have a while,

leg

Charles_D said...

Johannes Hopf found a way to make Carpet-Plot with Excel and gnuplot. He published on his website (german) an article but didn´t release the full source-code. Maybe somebody can ask him. The website is: http://www.johannes-hopf.de/2008/09/carpet-plots-mit-excel-und-gnuplot-erstellen/