PlotData3D.m
Im Rahmen meiner Dissertation hatte ich mehrere Datensätze, bestehend aus fortlaufend nummerierten Datein, aus denen ich Contourplots generieren und diese zu einem Film kompositionieren wollte.
pfad = strcat("./")
dataset = strcat("VU")
%dataset = strcat("UU")
%spezifische Anpassung des Plots
if (dataset=="UU")
mytitle=["UU"];
levels=[-4 -2 0 +2 +4];
%Farbdeklarationen rot -- blau
mycolors(64:-1:33,1:3) =transpose([linspace(1,1,32);linspace(0,1,32);linspace(0,1,32);]);
mycolors(1:32,1:3) =transpose([linspace(0,1,32);linspace(0,1,32);linspace(1,1,32);]);
elseif (dataset=="VU")
mytitle=["VU"];
levels=[-8 -6 -4 -2 0];
%Farbdeklarationen weiss -- blau
mycolors(01:32,1:3) =[linspace(0,0,32);linspace(0,0,32);linspace(0.2,1,32);];
mycolors(33:64,1:3) =[linspace(0,1,32);linspace(0,1,32);linspace(1,1,32);];
end %if
colormap(mycolors);
for i = 1:10
%Einlesen der Daten
dateiname = strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".dat")
[x,y,z]=textread(dateiname,"%f %f %f ");
%Generierung des Gitters
XX = linspace(min(x),max(x),101);
YY = linspace(min(y),max(y),101);
[GridX,GridY] = meshgrid(XX,YY);
%Interpolation der Daten
GridZ = griddata(xx,yy,w,GridXX,GridYY,"cubic");
%Contourplot
[c,h]=contourf(GridX,GridY,GridZ,levels);
set(h,"LineStyle","none");
set(gca,"FontSize",20);
set(0,"DefaultAxesFontSize",14);
set(0,"DefaultAxesFontWeight","bold");
colorbar("vert");
title(mytitle);
xlabel ("XX")
ylabel ("YY")
axis([0,180,0,180]);
axis equal;
set(gca,"xtick",[0 30 60 90 120 150 180])
set(gca,"ytick",[0 30 60 90 120 150 180])
%Koordinatenkreuz
x0=[0.,180.];
y0=[90.,90.];
x1=[90.,90.];
y1=[0.,180.];
hold on;
plot(x0,y0,"-k","LineWidth",1);
plot(x1,y1,"-k","LineWidth",1);
hold off;
%Bilder speichern
bild1 =strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".png")
bild2 =strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".eps")
bild3 =strcat(sprintf(pfad),sprintf(dataset),"_",sprintf("%03d",i),".pdf")
print ("-dpng",bild1)
set(gcf, "PaperPositionMode", "manual");
set(gcf, "PaperPosition", [1 5 18.0 18.0]);
set(gcf, "PaperType", "A4");
print ("-depsc2", bild2);
print ("-dpdf", bild3);
end %i
BallPlot.m
Um richtungsabhängige Informationen darzustellen, kann man eine Kugel mit diesen Daten skalieren und erhält so ein deformiertes Ei.
Die Beispieldatei enthaelt in Spalte 1 und 2 die Winkel von 0 bis 180, Spalte 3 und 4 die zu vergleichenden Datensätze.
clear;
pfad = strcat("./")
PI=3.14159;
%field = strcat("Variable1")
%field = strcat("Variable2")
field = strcat("Ball")
N=19;
%Einlesen der Felder
dateiname = strcat(sprintf(pfad),"Data_V1_V2.dat")
[Theta,phi,V1,V2]=textread(dateiname,"%f %f %f %f ");
dim=size(Theta)
Tspace = linspace(0,180,N);
Fspace = linspace(0,180,N);
[GridT,GridF] = meshgrid(Tspace,Fspace);
if (field=="V1")
GridI=griddata(Theta,phi,V1,GridT,GridF,"cubic");
mytitle=["Variable1"];
maxV=max(V1);
elseif (field=="V2")
GridI=griddata(Theta,phi,V2,GridT,GridF,"cubic");
mytitle=["Variable2"];
maxV=max(V2);
end
xx=zeros(N,N);
yy=zeros(N,N);
zz=zeros(N,N);
for i=1:N
for j=1:N
%Winkelwerte
Theta_tmp=(i-1)*180/(N-1);
phi_tmp=(j-1)*180/(N-1);
%Umrechnung der Winkel in Richtungsvektoren
xx(i,j)=cos(phi_tmp*PI/180);
yy(i,j)=cos(Theta_tmp*PI/180)*sin(phi_tmp*PI/180);
zz(i,j)=sin(Theta_tmp*PI/180)*sin(phi_tmp*PI/180);
if (field=="Ball")
% theoretischer Referenzwert, Zenit: (0,0,1)
xr(i,j)=xx(i,j)*zz(i,j);
yr(i,j)=yy(i,j)*zz(i,j);
zr(i,j)=zz(i,j)*zz(i,j);
mytitle=["homogene Verteilung"];
else
%Skalierung mit gemessener Intensitaet
x(i,j)=xx(i,j)*GridI(i,j);
y(i,j)=yy(i,j)*GridI(i,j);
z(i,j)=zz(i,j)*GridI(i,j);
mytitle=field;
end
end %j
end %i
%Umrechnung der Winkel in Richtungsvektoren
scale=1;
for i=1:dim
xxx(i)=cos(phi(i)*PI/180);
yyy(i)=cos(Theta(i)*PI/180)*sin(phi(i)*PI/180);
zzz(i)=sin(Theta(i)*PI/180)*sin(phi(i)*PI/180);
xxx(i)=xxx(i)*(scale*V2(i));
yyy(i)=yyy(i)*(scale*V2(i));
zzz(i)=zzz(i)*(scale*V2(i));
end %i
if (field=="Ball")
%Kegel
h=surf(xr,yr,zr);
%Halbkugel
%h=surf(xx,yy,zz);
else
maxV= z(10,10)
h=surf(x/maxV,y/maxV,z/maxV);
end
%Blickrichtung
az = -45;
el = 30;
view(az, el);
set(h,"LineStyle","none");
set(0,"DefaultAxesFontSize",20);
set(0,"DefaultAxesFontWeight","bold");
axis([-1,1, -1,1]);
%caxis([0 1]);
%colorbar("vert");
title(mytitle);
xlabel ("Winkel1")
ylabel ("Winkel2")
%axis tight
%set(gca,"xtick",[30 60 90 120 150 ])
%set(gca,"ytick",[30 60 90 120 150 ])
%Bildausgabe
bild1 =strcat("Kegel_",sprintf(field),".jpg")
bild2 =strcat("Kegel_",sprintf(field),".eps")
bild3 =strcat("Kegel_",sprintf(field),".pdf")
print ("-djpeg100",bild1)
set(gcf, "PaperPositionMode", "manual");
set(gcf, "PaperPosition", [0.5 0.5 8.0 8.0]);
print ("-depsc2", bild2);
print ("-dpdf", bild3);