第五章:初级绘图进阶
Special Plots
loglog
semilogx
semilogy
plotyy
hist
bar
pie
polar
Logarithm Plots
x = logspace(1,-1,100);
y = x.^2;
subplot(2,2,1);
plot(x,y);
title('Plot');
subplot(2,2,2);
semilogx(x,y);
Y & Y
Histogram
y = randn(1,1000);
Bar Charts
x = [1 2 5 4 8];
y = [x;1:5];
Stacked(堆叠式) and Horizontal(水平的)
x = [1 2 5 4 8];
y = [x;1:5];
subplot(1,2,1);
bar(y,'stacked');
title('Stacked');
subplot(1,2,2);
barh(y);
Pie Chart
a = [10 5 20 30];
subplot(1,3,1);
pie(a);
subplot(1,3,2);
pie(a,[0,0,0,1]);
subplot(1,3,3);
pie3(a,[0,0,0,1])
Polar Chart(极坐标)
x = 1:100;
theta = x/10;
r = log10(x);
subplot(1,4,1);
polar(theta,r);
theta = linspace(0,2*pi);
r = cos(4*theta);
subplot(1,4,2);
polar(theta,r);
theta = linspace(0,2*pi,6);
Stairs and Stem Charts
x = linspace(0,4*pi,40);
y = sin(x);
subplot(1,2,1);
stairs(y); %阶梯图
subplot(1,2,2);
stem(y); %绘制离散序列数据
Boxplot and Error Bar
load carsmall
boxplot(MPG,Origin);
x = 0:pi/10:pi;
y = sin(x);
e = std(y)*ones(size(x));
errorbar(x,y,e); %e为误差条的长度
fill
fill()
eg:
t = (1:2:15)'*pi/8; %绘制点图
x = sin(t);
y = cos(t);
fill(x,y,'r');
axis square off;
text(0,0,'STOP','Color','w','FontSize',80,...
'FontWeight','bold','HorizontalAlignment','center');
%自行查询Text属性
EG:
t = (1:4)'*pi/2;
x = sin(t);
y = cos(t);
fill(x,y,'y');
axis square off;
text(0,0,'WAIT','Color','k','FontSize',60,...
'FontWeight','bold','HorizontalAlignment','center','LineWidth',1.5);
Color Space
[R G B];
%0 is minimum;1 is maximum;
White:FFFFFF=[255 255 255] %十六进制转换
Exercise:更换bar的一个条子的颜色{可自查Bar属性/Set}
G = [46 38 29 24 13];
S = [29 27 17 26 8];
B = [29 23 19 32 7];
h = bar(1:5,[G' S' B']); %按列分组1:5;
title('Medal count for top 5 countries in 2012 Olympics');
ylabel('Number of medals');
xlabel('Country');
legend('Gold','Silver','Bronze');
set(gca,'XTickLabel',...
{'USA','CHN','GBR','RUS','KOR'});
set(h(1),'facecolor',[1 0.8 0.2]);
set(h(2),'facecolor',[0.8 0.8 0.8]);
set(h(3),'facecolor',[0.8 0.4 0]);
imagesc()
[x, y] = meshgrid(-3:.2:3,-3:.2:3);
z = x.^2+x.*y+y.^2;
surf(x,y,z);
box on;
set(gca,'FontSize',16);
zlabel('z');
xlim([-4 4]);
xlabel('x');
ylim([-4 4]);
ylabel('y');
%%%
imagesc(z);
axis square;
xlabel('x');
ylabel('y');
colorbar&colormap([Name])
colorbar; %颜色变化
colormap([Name]);
%颜色变化
%可以看做:
a = ones(256,3);
colormap(a)
%自查colormap
3D Plots
plot3
surf
surfc
surface
meshc
contour
contourf
plot3()
EG1:
x = 0:0.1:3*pi;
z1 = sin(x);
z2 = sin(2*x);
z3 = sin(3*x);
y1 = zeros(size(x));
y3 = ones(size(x));
y2 = y3./2;
plot3(x,y1,z1,'r',x,y2,z2,'b',x,y3,z3,'g');
grid on;
xlabel('x-axis');
ylabel('y-axis');
zlabel('z-axis');
EG2:
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
grid on;
axis square;
EG3:
turns = 40*pi;
t = linspace(0,turns,4000);
x = cos(t).*(turns-t)./turns;
y = sin(t).*(turns-t)./turns;
z = t./turns;
plot3(x,y,z);
grid on;
Surface
meshgrid() %组成网格
eg:
x = -2:1:2;
y = -2:1:2;
[X,Y] = meshgrid(x,y);
mesh() & surf()
eg:
x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1);
mesh(X,Y,Z);
subplot(1,2,2);
surf(X,Y,Z);
contour()
eg:
x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(2,1,1);
mesh(X,Y,Z);
axis square;
subplot(2,1,2);
contour(X,Y,Z);
axis square;
contour(Z,[-.45:.05:.45])
clabel()
contourf() %fill
eg:
x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(1,3,1);
contour(Z,[-.45:.05:.45])
axis square;
subplot(1,3,2);
[C,h] = contour(Z);
clabel(C,h);
axis square;
subplot(1,3,3);
contourf(Z);
axis square;
meshc() & surfc()
eg:
x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1);
meshc(X,Y,Z);
subplot(1,2,2);
surfc(X,Y,Z);
view() & light()
eg:
sphere(50);
shading flat;
light('Position',[1 3 2]);
light('Position',[-3,-1,3]);
material shiny;
axis vis3d off;
set(gcf,'Color',[1 1 1]);
view(-45,20);
%调整角度
eg:
[X,Y,Z] = sphere(64);
h = surf(X,Y,Z);
axis square vis3d off;
reds = zeros(256,3);
reds(:,1) = (0:256.-1)/255;
colormap(reds);
shading interp;
lighting phong;
set(h,'AmbientStrength',0.75,'DiffuseStrength',0.5);
L1 = light('Position',[-1,-1,-1]);
%set(L1,'Position',[-1,-1,1]);
%set(L1,'Color','g');
patch()
eg:
v = [0 0 0;1 0 0;1 1 0; 0 1 0;0.25 0.25 1;...
0.75 0.25 1;0.75 0.75 1;0.25 0.75 1];
f = [1 2 3 4;5 6 7 8;1 2 6 5;2 3 7 6;3 4 8 7;4 1 5 8];
subplot(1,2,1);
patch('Vertices',v,'Faces',f,...
'FaceVertexCData',hsv(6),'FaceColor','flat');
view(3);
axis square tight;
grid on;
subplot(1,2,2);
patch('Vertices',v,'Faces',f,...
'FaceVertexCData',hsv(8),'FaceColor','interp');
view(3);
axis square tight;
grid on;
A professional graph
load cape
X = conv2(ones(9,9)/81,cumsum(cumsum(randn(100,100)),2));
surf(X,'EdgeColor','none','EdgeLighting','Phong',...
'FaceColor','interp');
colormap(map);
caxis([-10,300]);
grid off;
axis off;
%random graph,很好玩(赞)