본문 바로가기

Matlab Tips

MATLAB_ 그래프 그리기

Grid 그리기

http://stackoverflow.com/questions/6580274/matlab-minor-grid-with-solid-lines-grey-color

그래프 조절 가능한 파라메터 다루는 법

http://faculty.washington.edu/ionefine/html/BasicPlotting.html


http://dorudoru.tistory.com/230
↓출처

(1) plot할 데이터를 준비한다.

(2) 데이터를 plot할 그림 창을 선택하고 Single graphic으로 할 건지 Multi graphic으로 할건지를 선택한다.

(3) plot함수를 호출한다.

(4) Line이나 marker의 property를 선택한다.

(5)축의 한계값, Grid line등을 설정한다.

(6) xlabel, legend, text등으로 그래픽 객체에 라벨링을 한다.

(7) 그래픽 객체를 출력한다.

  • Line을 그리는 그래픽 함수들

함수설명
plotx와 y축에 대해서 모두 선형 배율(linear scale)로 된 그래프를 그린다.
loglogx와 y축에 대해서 모두 log 배율(linear scale)로 된 그래프를 그린다.
semilogxx축에 대해서는 log 배율(linear scale)로 y축에 대해서는 선형 배율(linear scale)로 된 그래프를 그린다.
Semilogyx축에 대해서는 선형 배율(linear scale)로 y축에 대해서는 log 배율(linear scale)로 된 그래프를 그린다.
plotyyy축의 좌우에 값으로 라벨이 된 그래프를 그린다.

  • plot를 사용한 선 그리기

(1) 2차원 데이터의 선 그리기의 경우

plot(x,y,Color+LineStyle+Marker)

(2) 3차원 데이터의 선 그리기의 경우

plot(x,y,z,Color+LineStyle+Marker)

(3) 여러 쌍의 데이터를 하나의 그림 창에 한꺼번에 그리고 싶은 경우

plot(x1,y1,CSM1, x2,y2,CSM2,, xn,yn,CSMn,)

  • Line을 그리는 함수들에서 사용 가능한 선의 color

MATLAB에서의 symbolColor (RGB값)MATLAB에서의 symbolColor (RGB값)
cCyan (011)ggreen (010)
mMagenta (101)bblue (001) (default 값)
yyellow (110)wwhite (111)
rred (100)kblack (000)

  • Line을 그리는 함수들에서 사용 가능한 선의 style

MATLAB에서의 symbolStyleMATLAB에서의 symbolStyle
-Solid line (default 값):Dotted line
Dashed line-.Dash-dot line
noneNo line

  • Line을 그리는 함수들에서 사용 가능한 선의 marker

MATLAB에서의 symbol (용어)Marker StyleMATLAB에서의 symbol (용어)Marker Style
+ (Plus sign)+^ (Upward pointing triangle)
O (Circle)Ov (Downward pointing triangle)
* (Asterisk)*> (Right pointing triangle)
. (Point)·< (Left pointing triangle)
X (Cross)×pentagram (Five pointed star)
square (Square)hexagram (Six pointed star)
diamond (Diamond)noneNo marker (default 값)

  • 그랙픽 객체에 라벨링을 하는 그래픽 함수들

함수 명설명
title그래프의 제목을 더한다.
xlabelx축에 라벨을 더한다.
ylabely축에 라벨을 더한다.
zlabelz축에 라벨을 더한다.
legend그래프에 범례를 더한다.
text그래픽 객체의 임의의 위치에 문자열을 더한다.
gtext마우스를 사용하여 그래픽 객체의 임의의 위치에 문자열을 더한다
grid그래픽 객체에 격자를 더하거나 없앤다.

  • 극 좌표계에서의 선 그리기

polar(각도,반지름, ’Color+LineStyle+Marker’)

  • 좌표계의 변환

(1) 직각 좌표계에서의 데이터를 극 좌표계의 데이터로 변환 하는 함수

[각도,반지름]=cart2pol(x좌표,y좌표)

[각도,반지름,높이]=cart2pol(x좌표,y좌표,z좌표)

(2) 극 좌표계에서의 데이터를 직각 좌표계의 데이터로 변환 하는 함수

[x좌표,y좌표]= pol2cart (각도,반지름)

[x좌표,y좌표,z좌표]=pol2cart(각도,반지름,높이)

(3) 직각 좌표계에서의 데이터를 구면 좌표계의 데이터로 변환 하는 함수

[f,q,반지름]=cart2sph(x좌표,y좌표,z좌표)

(4) 구면 좌표계에서의 데이터를 직각 좌표계의 데이터로 변환 하는 함수

[x좌표,y좌표,z좌표]=sph2cart(f,q,반지름)

  • 마우스를 사용한 좌표 값의 입력

[x좌표,y좌표,Button]=ginput(N)

  • 래픽 객체를 파일로 저장하는 방법

print -f<handle> -device -options filename

  • 그래픽 객체를 파일로 저장하기 위한 device들

Device명저장 파일 형식
Dmeta파일 확장자가 EMF인 Meta파일 형식으로 저장한다.
Dbitmap파일 확장자가 BMP인 Bitmap파일 형식으로 저장한다.
Dps파일 확장자가 PS인 흑백 프린터를 위한 PostScript 파일 형식으로 저장한다. (흑백으로 저장됨)
Dpsc파일 확장자가 PS인 칼라 프린터를 위한 PostScript 파일 형식으로 저장한다. (칼라로 저장됨)
dps2파일 확장자가 PS인 흑백 프린터를 위한 Level 2 PostScript 파일 형식으로 저장한다. (흑백으로 저장됨)
dpsc2파일 확장자가 PS인 칼라 프린터를 위한 Level 2 PostScript 파일 형식으로 저장한다. (칼라로 저장됨)
deps파일 확장자가 EPS인 흑백 프린터를 위한 Encapsulated PostScript 파일 형식으로 저장한다. (흑백으로 저장됨)
depsc파일 확장자가 EPS인 칼라 프린터를 위한 Encapsulated PostScript 파일 형식으로 저장한다. (칼라로 저장됨)
deps2파일 확장자가 EPS인 흑백 프린터를 위한 Encapsulated Level 2 PostScript 파일 형식으로 저장한다. (흑백으로 저장됨)
depsc2파일 확장자가 EPS인 칼라 프린터를 위한 Encapsulated Level 2 PostScript 파일 형식으로 저장한다. (칼라로 저장됨)
dhpgl파일 확장자가 HGL인 Hewlett-Packard 7475A 플로터를 위한 HPGL파일 형식으로 저장한다.
dill파일 확장자가 AL인 Adobe Illustrator 88 호환 파일 형식으로 저장한다.
djpeg<nn>파일 확장자가 JPG인 JPEG 파일 형식으로 저장한다.

<nn>은 Jpeg파일의 질을 나타내는 것으로 0에서 100사이의 값을 가진다.

dtiff파일 확장자가 TIF인 압축된TIFF 파일 형식으로 저장한다.
dtiffnocompression파일 확장자가 TIF인 압축되지 않은 TIFF 파일 형식으로 저장한다.
dpng파일 확장자가 PNG인 Portable Network Graphic 24-bit truecolor image 파일 형식으로 저장한다.
dmfile저장할 그림 창을 다시 복원할 MATLAB의 M-file과 MAT-file을 만든다.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

↓출처:
http://blog.naver.com/PostView.nhn?blogId=bclee78&logNo=65125742&widgetTypeCall=true

가끔 y축 데이터 범위가 완전히 다른 그래프를 작성할 경우가 있다. 이런 경우 MATLAB에서 plotyy의 명령어를 사용할 수 있다.

 

만약 다음의 데이터 셋이 있다고 가정하자.

clear; close all; clc;

x1 = 0 : 0.1 : 20;
y1 = x1 .* sin(x1);
x2 = 10 : 0.2 : 25;
y2 = 50 * x2;

 

아래와 같이 그래프를 작성하면

figure(1)
plot(x1, y1,'-b',x2,y2,'--g');
ylabel('y'); xlabel('x');
legend('y1','y2','location','northwest');

 

아래 그림처럼 MATLAB의 auto-scaling에 의해 y1의 데이터를 확인하기 어렵다.

 

이런 경우 아래와 같이 plotyy를 이용하면

figure(2)

plotyy(x1,y1,x2,y2);

결과는 위와 같다.

 

불행히도 plotyy는 plot 명령어처럼 손쉽게 x,y 축의 속성을 바꿀 수 없다.

몇가지 명령어를 사용하여 바꾸어 보았다.

  

 

figure(3)
[axeshandles,line1handle,line2handle]=plotyy(x1,y1,x2,y2);
set(line1handle,'linestyle','-','color','blue','linewidth',2);
set(line2handle,'linestyle','-','color','green','linewidth',2);
title('y1 is the blue line, y2 is the green dashed line','fontsize',14);
axes(axeshandles(1));
ylabel('y1=x.*sin(x)','fontsize',14);
axes(axeshandles(2));
ylabel('y2=50*x','fontsize',14);
xlabel('x','fontsize',14);

또한 다음과 같이 x,y 축의 눈금간격을 조절할 경우

 

figure(4)
[axeshandles,line1handle,line2handle]=plotyy(x1,y1,x2,y2);
set(line1handle,'linestyle','-','color','blue','linewidth',2);
set(line2handle,'linestyle','-','color','green','linewidth',2);
title('y1 is the blue line, y2 is the green dashed line','fontsize',14);
axes(axeshandles(1));
ylabel('y1=x.*sin(x)','fontsize',14);
set(gca,'YTick',[-30 -20 -10 0 10 20 30]);
set(gca,'XTick',[0 6.25 12.5 18.75 25]);
axis([ 0 25 -30 30 ]);

axes(axeshandles(2));
ylabel('y2=50*x','fontsize',14);
xlabel('x','fontsize',14);
set(gca,'YTick',[400 600 800 1000 1200 1400]);
set(gca,'XTick',[0 6.25 12.5 18.75 25]);
axis([ 0 25 400 1400 ]);

 

이상으로 두개의 범위가 다른 데이터를 하나의 그래프에 표현하는 plotyy에 대하여 알아보았다.

[

추가 축 생성 관련

http://stackoverflow.com/questions/1719048/plotting-4-curves-in-a-single-plot-with-3-y-axes


addaxis5.zip


http://www.mathworks.com/matlabcentral/fileexchange/9016-addaxis

Loren on the Art of MATLAB

http://blogs.mathworks.com/loren/2009/07/22/computational-geometry-in-matlab-r2009a-part-ii/

'Matlab Tips' 카테고리의 다른 글

Matlab-MuPad  (0) 2013.06.24
num 형식 -> date 형식 전환  (0) 2012.12.07
색상표 관련 링크  (0) 2012.12.03