Đồ thị hai chiều
Để vẽ đồ thị, sử dụng lệnh plot
x=linspace(0,2*pi,30); y=sin(x); plot(x,y),title('Hinh 1')
z=cos(x); plot(x,y,x,z), title('Hinh 2')
Cách khác để vẽ 2 đồ thị trên 1 hình
W=[y;z]; plot(x,W), title('Hinh 3')
Các dạng đường, điểm và màu
Color | Linestyle |
b | – |
g | : |
r | -. |
c | — |
m | |
y | |
k | |
w |
Marker | Marker |
. | v |
o | ^ |
x | < |
+ | > |
* | p |
s | h |
d |
Ví dụ:
plot(x,y,'b:p',x,z,'c-',x,z,'m+') title(‘Hinh 4’)
Lưới, trục và nhãn
x=linspace(0,2*pi,30); y=sin(x); z=cos(x); plot(x,y,x,z) box off xlabel('Bien độc lập x') ylabel('Bien phụ thuộc y, z') title('Plot') grid on, box on text(2.5,0.7,'sin(x)') gtext('cos(x)') set(gcf,'color','white');
Điều khiển trục đồ thị:
Lệnh |
axis([xmin xmax ymin ymax]) |
axis square |
axis equal |
axis normal |
axis off |
axis on |
Ví dụ:
x=linspace(0,2*pi,30); y=sin(x); plot(x,y) axis([0 2*pi -1.5 2]) % Miền hiển thị trục x từ 0 đến 2pi, trục y từ -1.5 đến 2 % Để tắt hiển thị trục, dùng lệnh axis off
Vẽ nhiều đồ thị:
x=linspace(0,2*pi,30); y=sin(x); z=cos(x); plot(x,y,'m') hold on % Vẽ thêm đồ thị vào figure hiện tại plot(x,z,'b')
Vẽ đồ thị con:
Để vẽ nhiều đồ thị con, dùng subplot(m,n,p)
x=linspace(0,2*pi,30); y=sin(x); z=cos(x); a=2*sin(x).*cos(x); b=sin(x)./(cos(x)+eps); subplot(2,2,1) plot(x,y,'b'),axis([0 2*pi -1 1]) subplot(2,2,2) plot(x,z,'r'),axis([0 2*pi -1 1]) subplot(2,2,3) plot(x,a,'k'),axis([0 2*pi -1 1]) subplot(2,2,4) plot(x,b,'g'),axis([0 2*pi -20 20])
Đồ thị ba chiều
Đồ thị đường:
Cú pháp: >>plot3(x1, y1, z1, S1, x2, y2, z2, S2…)
t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t') axis square; grid on; text(0,0,0,'Origin')
Vẽ nhiều đường
x=linspace(0,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,x,y2,z2,x,y3,z3) xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') grid on
Vẽ ma trận các dữ liệu
[X,Y] = meshgrid([-2:0.1:2]); Z = X.*exp(-X.^2-Y.^2); plot3(X,Y,Z) xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') grid on
Đồ thị lưới
Cú pháp: >>mesh(X,Y,Z)
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z) xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis')
Để thấy luôn lưới mặt khuất, dùng thêm lệnh hidden off
Một số kiểu vẽ lưới
meshc(X,Y,Z) % Đồ thị lưới có các đường mức
meshz(X,Y,Z) % Đồ thị lưới với mặt phẳng zero
Đồ thị dạng mặt
Cú pháp: >>surf(X,Y,Z)
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surf(X,Y,Z)
Để bỏ đi đường lưới, dùng lệnh shading flat Để làm mịn vùng màu, dùng lệnh shading interp
Ngoài ra còn nhiều loại đồ thị lưới khác
surfc(X,Y,Z) %Đồ thị mặt có các đường mức surfl(X,Y,Z) %Đồ thị mặt có hiệu ứng ánh sáng surfnorm(X,Y,Z) %Đồ thị mặt có pháp tuyến
[X,Y,Z] =peaks(30); surfl(X,Y,Z) shading interp colormap pink % Đồ thị có pháp tuyến surfnorm(X,Y,Z)
Đồ thị đường mức
contour(X,Y,Z,N) %Đồ thị đường mức 2 chiều contour3(X,Y,Z,N) %Đồ thị đường mức 3 chiều pcolor(X,Y,Z) %Đồ thị chuyển cao độ tỉ lệ với màu contourf(X,Y,Z,N) %Đồ thị đường mức 2 chiều có màu
Ví dụ:
% Đường mức 2 chiều [X,Y,Z] =peaks; contour(X,Y,Z,20) % Đường mức 3 chiều contour3(X,Y,Z,20) % Đồ thị màu cao độ pcolor(X,Y,Z) shading interp contourf(X,Y,Z,20)
C = contour(X,Y,Z,20); % tương tự cho contour3 và contourf
clabel(C)
Màu sắc:
Màu được định nghĩa từ 3 màu chính RGB có 3 cột, 1 hàng giá trị từ 0->1
Red | Green | Blue | Color |
1 | 0 | 0 | red |
0 | 1 | 0 | green |
0 | 0 | 1 | blue |
1 | 1 | 0 | yellow |
1 | 0 | 1 | magenta |
0 | 1 | 1 | cyan |
0 | 0 | 0 | black |
1 | 1 | 1 | white |
Màu kết hợp:
Red | Green | Blue | Color |
0 | 0.5 | 0 | dark green |
0.67 | 0 | 1 | violet |
1 | 0.5 | 0 | orange |
0.5 | 0 | 0 | dark red |
0.5 | 0.5 | 0.5 | medium gray |
Matlab cung cấp nhiều phổ màu đặc biệt
Standard Colormap | Description |
hsv | Phổ màu 7 sắc bắt đầu và kết thúc là màu đỏ |
jet | bắt đầu là màu đỏ và kết thúc là màu xanh dương |
hot, cool | Màu nóng và màu lạnh |
summer,autumn,winter,spring | Màu của bốn mùa |
white,gray,bone,pink | Biến thiên từ màu đó đến màu trắng |
copper | Màu đồng |
[x,y,z]=peaks; mesh(x,y,z); colormap(hsv) axis([-3 3 -3 3 -6 8]) colorbar % hiển thị phổ màu
Để sử dụng nhiều hơn một phổ, dùng lệnh sau:
mymap=[hsv(32);copper(32)]; colormap(mymap) mesh(peaks+8); view(90,0) hold on mesh(peaks-8); colorbar hold off
Đồ thị động
- Dùng lệnh pause để làm chậm tốc độ vẽ của chương trình.
- Nếu cần thiết, dùng lệnh hold on để vẽ các đồ thị sau mà vẫn giữ được các đồ thị trước.
Cú pháp: >> pause(n) % n: 0.01 giây
clear all x=linspace(0,2*pi); y=sin(x); for i=1:100 plot(x(i),y(i),'*','markersize',10) pause(0.2) end
clear all x=linspace(0,2*pi); y=sin(x); for i=1:100 plot(x(i),y(i), '*','markersize',10) axis([0 2*pi+.2 -1.2 1.2]) hold on pause(0.2) end