• 검색 결과가 없습니다.

그래프

N/A
N/A
Protected

Academic year: 2022

Share "그래프"

Copied!
42
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제 3장

그래프 속성의 설정과 2차원 그래프

(2)

그래프 속성의 설정

• plot: 가장 기본적인 MATLAB 그래프 작성함수

• sin(x)와 cos(x)의 그래프에서 sin(x)는 선이 아닌 원 모양으로, cos(x)는 점선으로 표현: plot 함수에서 원 모양을 ‘o'로, 점선 모양을 ’:‘로 지정

>> x = 0:0.1:2;

>> y1 = sin(x); y2 = cos(x);

>> plot(x,y1,'o',x,y2,':')

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

-0.5 0 0.5 1

(3)

• 설정 가능한 색, plot 기호, 선 모양

곡선속성 기호 의미 곡선속성 기호 의미

기호

( 데 이 터 점을 표시)

. 점

색(8종류)

b 파란색

x x표 r 빨강색

o 원 g 녹색

+ 플러스기호 c 청록색

* 별표 m 자홍색

s 정방형 y 노란색

d 다이아몬드 w 흰색

v 삼각형(위쪽방향) k 검은색

^ 삼 각 형(아래쪽방 향)

선 모양 (4종류)

- 실선

< 삼각형(왼쪽방향) : 점선

> 삼각형(오른쪽방

향) -. 반점선

p 오각형 -- 긴점선

h 육각형

(4)

• 선 속성을 나타내는 기호들은 조합사용이 가능: plot(x,y,‘g+:')는 각 데이터 점들을 플러스 기호로 나타내고 그 사이를 녹색의 점선으로 연결

• 곡선의 색에 한하여 원하는 색을 지칭하는 단어를 넣는 것도 가능

• 예: 검은색은 원래 k이지만 plot(l:10,‘black')도 가능

(5)

•격자, 라벨, 범례의 추가

•Grid:는 그래프에 격자를 삽입

•그래프 라벨: xlabel 함수와 ylabel 함수를 이용

•범례: legend 함수를 이용

•예: sin(x)와 챤(x)의 그래프에서 sin(x)는 선이 아닌 원 모양으로, cos(x)는 점선으로 나타내고 타이틀과 격자를 추가한 다음 x, y축에 라벨을 표시하고 범례를 삽입:

>> x = 0:0.1:2;

>> y1 = sin(x); y2 = cos(x);

>> plot(x,y1,'o',x,y2,':')

>> grid on

>> xlabel('x'), ylabel('y1, y2')

>> legend('sin(x)','cos(x)')

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

-0.5 0 0.5 1

x

y1, y2

y1=sin(x), y2=cos(x)

sin(x) cos(x)

(6)

• 범례는 마우스의 왼쪽 버튼으로 선택한 상태로 드래그하여 그래프 내의 원하는 장소로 이동이 가능

• legend 함수의 마지막 파라미터에 숫자를 지정: 범례의 위치를 설정

• 예: 0을 지정 - 자동으로 선과 겹치지 않는 적절한 위치에 범례를 표시

• legend 함수의 옵션으로 -1을 지정: 범례는 그래프 축의 오른쪽 바깥에 표시

% useLegend.m : 범례 옵션의 사용예 x = 0:0.1:2*pi;

y = sin(x); z = exp(-x).*cos(x);

plot(x,y, x,z,':');

legend('sin(x)','exp(-x)*cos(x)',-1)

0 1 2 3 4 5 6 7

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

sin(x) exp(-x)*cos(x)

(7)

• legend 함수의 옵션:

legend 함수의 옵션 그래프 상의 범례의 위치

0 가능한 한 데이터와 겹치지 않는 “최적”위치

1 축의 오른쪽 위 모서리(기본)

2 축의 왼쪽 위 모서리

3 축의 왼쪽 아래 모서리

4 축의 오른쪽 아래 모서리

-1 그래프의 오른쪽

(8)

• 그래프 축(axis) 속성의 설정

• axis: 그래프 축에 대한 다양한 속성들을 설정

•예: 범위에서 y=cos(x)의 그래프:

>> x = 0:0.1:2*pi;

>> y = cos(x);

>> plot(x,y)

0 1 2 3 4 5 6 7

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

•불필요한 여분의 삭제: axis 명령어의 tight 옵션을 사용

>> axis tight

0 1 2 3 4 5 6

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

(9)

• x축 및 y축의 범위: axis([xmin xmax ymin ymax])와 같이 설정

>> axis([-1 7 -1.2 1.2])

-1 0 1 2 3 4 5 6 7

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

(10)

• axis 명령어 옵션:

axis 명령어의 옵션 의미

axis([xmin xmax ymin ymax]) x축 및 y축의 한계를 설정

axis auto 기본 축 한계로 되돌아감

axis equal x, y, z 축 상의 데이터 단위를 동일화

axis off 축을 제거

axis square 축 박스를 정사각형(정육면체)으로

axis tight 축 한계를 데이터의 범위로 설정

grid on 점선의 격자선을 생성

grid off 격자선을 제거

xlim([xmin xmax]) x축 한계를 설정 ylim([ymin ymax]) y축 한계를 설정

(11)

• 문자, 숫자를 표시하는 간격의 자유로운 변경:

% xlabelchar.m : x축에 숫자 대신 문자를 표시 w = [ ];

xlabel = 0:0.5:2;

% w = ['0pi|0.5pi|1pi|1.5pi|,2pi'] 인 문자열을 가로축에 표시하고자 하므로

% for 문을 이용한다.

for i=1:length(xlabel)

w = [w num2str(xlabel(i)),'pi|'];

end w = w(1:end-1);

x = 0:0.1:2*pi;

y = sin(x);

plot(x,y)

set(gca,'xtick',xlabel*pi,'xticklabel',w)

0pi 0.5pi 1pi 1.5pi 2pi

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

(12)

• 특수문자의 표현

• xlabel, ylabel에서의 문자 설정: 위첨자 문자 ^(해트), 아래첨자 문자 _(언더스코어)나 font 크기의 변경, ∖fontsize{}를 이용하여 수식 등의 표시가 가능

• 그래프의 타이틀이나 라벨에 그리스 문자나 위첨자, 아래첨자를 표시 x=(1:20)*0.1;

y=sin(x);

plot(x,y,'o',x,cos(x),':')

title('Comparison between sin(\omega_0 {\it t}) wave and cos(\omega_0 {\it t})')

xlabel('time in second [{\bf time}]') ylabel('amplitude [{\bf Volt}]')

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

-0.5 0 0.5 1

Comparison between sin(0 t) wave and cos(0 t)

time in second [ time]

amplitude [ Volt]

(13)

•특수문자들의 요약

\alpha, \beta, \gamma, \delta, \epsilon, \zeta, \eta, \theta, \vartheta, \iota,

\kappa, \lambda, \mu, \nu, \xi, \pi, \rho, \sigma, \varsigma, \tau, \equiv, \Im, \otimes,

\cap, \supset, \int, \rfloor, \lfloor, \perp, \wedge, \rceil, \vee, \langle, \upsilon, \phi, \chi,

\psi, \omega, \Gamma, \Delta, \Theta, \Lambda,\Xi, \Pi, \Sigma, \Upsilon, \Phi, \Psi,

\Omega, \forall, \exists, \ni, \cong, \approx, \Re, \oplus, \cup, \subseteq, \in, \lceil, \cdot,

\neg, \times, \surd, \varpi, \rangle, \sim, \leq, \infty, \clubsuit, \diamondsuit, \heartsuit,

\spadesuit, \leftrightarrow, \leftarrow, \uparrow, \rightarrow, \downarrow, \circ, \pm,

\geq, \propto, \partial, \bullet, \div, \neq, \aleph, \wp, \oslash, \supseteq, \subset, \o,

\nabla, \ldots, \prime, \0, \mid, \copyright

(14)

•특수문자에 의하여 나타내어지는 기호: specialText.m M-파일을 수행하여 획득 - 텍스트 파일 specialChar.txt와 스크립트 M-파일 specialText.m을 작성하고 Command Window에서

specialText를 입력 % specialChar.txt

\alpha, \beta, \gamma, \delta, \epsilon, \zeta, \eta, \theta, \vartheta, \iota,

\kappa, \lambda, \mu, \nu, \xi, \pi, \rho, \sigma, \varsigma, \tau, \equiv,

\Im, \otimes, \cap, \supset, \int, \rfloor, \lfloor, \perp, \wedge, \rceil,

\vee, \langle, \upsilon, \phi, \chi, \psi, \omega, \Gamma, \Delta, \Theta,

\Lambda,\Xi, \Pi, \Sigma, \Upsilon, \Phi, \Psi, \Omega, \forall, \exists,

\ni, \cong, \approx, \Re, \oplus, \cup, \subseteq, \in, \lceil, \cdot,

\neg, \times, \surd, \varpi, \rangle, \sim, \leq, \infty, \clubsuit,

\diamondsuit, \heartsuit, \spadesuit, \leftrightarrow, \leftarrow,

\uparrow, \rightarrow, \downarrow, \circ, \pm, \geq, \propto, \partial,

\bullet, \div, \neq, \aleph, \wp, \oslash, \supseteq, \subset, \o, \nabla,

\ldots, \prime, \0, \mid, \copyright

% specialText.m : 특수문자 기호 fid=fopen('specialChar.txt', 'r');

data=fread(fid);

(15)

fclose(fid);

data=char(data)';

data=data(find(~(data==13)));

data=data(find(~(data==10)));

index=find(data==',');

index=[0 index];

for i=1:length(index)-1 subplot(10,10,i);axis off

text(0.5,0.5,['\fontsize{30}',data((index(i)+1):(ind ex(i+1)-1))])

end

         

         

         

         

         

         

         

         

         

      

(16)

그래프의 표현

• 좌우 세로축을 다르게 사용하기: plotyy 함수

•plotyy: 하나의 그래프 상에서 좌우 y축의 눈금을 다르게 표현

>> x=(0:10)*0.1;

>> plotyy(x,sin(x),x,10*cos(x))

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.2 0.4 0.6 0.8 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 15

6 7 8 9 10

(17)

• 여러 그래프들을 하나의 그림에 나타내기

• subplot: 격자 패턴의 여러 그래프들을 동일한 그림상에 모두 함께 표시

• subplot(435), 혹은 subplot(4,3,5): 그림창을 영역들의 4 x 3 배열로 구분하고 해당되는 그래프 가 5번째 영역, 즉 2번째 행의 2번째 위치(영역)에 위치

>> subplot(221), fplot('exp(sqrt(x)*sin(21*x))',[0 2*pi])

>> subplot(222), fplot('sin(round(x))',[0 10],'--')

>> subplot(223), fplot('cos(30*x)/x',[0.01 1 -15 20],'-.')

>> subplot(224), fplot('[sin(x),cos(2*x),1/(x+1)]',[0 5*pi -1.5 1.5])

0 2 4 6

0 5 10 15

0 5 10

-1 -0.5 0 0.5 1

0.2 0.4 0.6 0.8 1

-10 0 10 20

0 5 10 15

-1.5 -1 -0.5 0 0.5 1 1.5

(18)

•곡선과 눈금모양의 설정

•LineWidth(기본은 0.5 포인트)와 MarkerSize(기본은 6 포인트) 속성: 점으로 지정되는데 하나의 점은 1/72 인치

>> plot(x,y,'LineWidth',2)

>> plot(x,y,'p','MarkerSize',10)

•색상의 설정: MarkerEdgeColor 및 MarkerFaceColor를 이용

•예: 원의 둘레를 자홍색

>> plot(x,y,'o','MarkerEdgeColor','m')

•곡선 속성들의 기본값:

plot 함수의 옵션 기본값 LineWidth 0.5 MarkerSize 6 MarkerEdgeColor auto MarkerFaceColor none

FontSize 10

FontAngle normal

(19)

• plot 함수를 사용한 애니메이션

• plot 함수를 이용한 애니메이션의 예: 둥근 점의 원 운동

% exAnimation.m : plot 함수를 이용한 애니메이션의 보기 close all

for x = 0:0.01:10;

plot(sin(x),cos(x),'ob');

axis([-2 2 -2 2]);

axis('square');

drawnow;

end

• 2개의 axis 함수로 좌표축 크기를 지정하고 종횡비를 일정하게 지정(‘square')

• drawnow: 그래픽 버퍼에 들어간 정보를 모두 화면에 표시

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

(20)

그래프의 저장과 호출

• figure로 그려진 그림을 직접 파일(확장자.fig)로 저장 가능

• 그림만 저장하고 싶은 경우: 그림의 메뉴바의 [File]→[Save], 또는 save as로 저장

>> plot(sin(0:0.01:2*pi));

>> saveas(gcf,'test');

• 그림의 호출: openfig를 사용

>> openfig('test')

(21)

여러 가지 2차원 그래프

• 파라미터 그래프

• 반경이 1이고 중심이 (0,0)인 원:

같이 파라미터 형태로 표현이 가능

• 위에서 t는 0부터 1까지 변화:

>> T = 0:0.01:1;

>> plot(cos(2*pi*T), sin(2*pi*T))

>> axis square

-1 -0.5 0 0.5 1

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

• ezplot을 이용한 파라미터 그래프의 작성:

>> ezplot('cos(t)', 'sin(t)', [0 2*pi]); axis square

(22)

• 로그척도 그래프

• loglog: x와 y 축의 척도가 모두 로그척도인 그래프

• semilogy: 세로축만 로그척도인 그래프

• 예 의 범위에서 의 그래프:

% logplot.m : 로그좌표 그래프들의 보기 clear all

x = 1:1:1000;

y = x.^2;

subplot(2,2,1), loglog(x,y), title('loglog(x,y)'), grid on

subplot(2,2,2), semilogx(x,y), title('semilogx(x,y)'), grid on subplot(2,2,3), semilogy(x,y), title('semilogy(x,y)'), grid on subplot(2,2,4), plot(x,y), title('y=x^2')

100 102 104

0 2 4 6 8

10x 105 semilogx(x,y)

100 102 104

100 102 104 106

loglog(x,y)

0 500 1000

100 102 104 106

semilogy(x,y)

0 500 1000

0 5

10x 105 y=x2

(23)

• 등고선(수준곡선) 그래프

• 2변수 함수의 등고선 그래프: 함수의 수준곡선들, 즉 함수의 값이 일정한 x-y 평면상의 점들의 집합의 그래프

• meshgrid 및 contour를 이용하여 생성

• 먼저 [X,Y] = meshgrid(x,y)를 이용하여 어떤 사각형 상에 격자를 구성

• contour(X,Y,f(X,Y))는 이 사각형 상에서 f의 몇 가지 등고선들을 컬러맵에 해당되는 색으로 표현

• contour(X,Y,f(X,Y),n,'k')는 구간 [min f, max f]를 n+1 개의 부구간 min f max f들로 나눈 다음 n 개의 값

에 해당하는 n 개의 등고선들을 도시

•예: 의 등고선 그래프:

>> [X Y] = meshgrid(-3:0.1:3, -3:0.1:3);

>> contour(X, Y, X.^2 + Y.^2); axis square

-3 -2 -1 0 1 2 3

-3 -2 -1 0 1 2 3

• ezcontour를 이용하여 등고선 그래프를 작성 가능:

>> ezcontour('x^2 + y^2', [-3, 3], [-3, 3]); axis square

(24)

•보기: 구간 및 에서 함수 에 대한 수준곡선의 생성: ezcontour 및 contour 함수를 이용

>> subplot(211)

>> ezcontour('sin(3*y-x^2+1)+cos(2*y^2-2*x)',[-2 2 -1 1]);

>> x = -2:.01:2; y = -1:.01:1;

>> [X,Y] = meshgrid(x,y);

>> Z = sin(3*Y-X.^2+1)+cos(2*Y.^2-2*X);

>> subplot(212)

>> contour(x,y,Z,20)

(25)

• MATLAB 내장 2변수 함수 peaks의 수준곡선 그래프: peaks는 Gauss 분산으로부터 얻어진 2변수 함수를 표시

>> [x,y,z] = peaks;

>> pcolor(x,y,z)

>> shading interp

>> hold on

>> contour(x,y,z,20,'k')

>> hold off

-3 -2 -1 0 1 2 3

-3 -2 -1 0 1 2 3

(26)

• clabel 함수

• 수준곡선들의 크기(높이)를 그래프 안에 기입

• 보기: 의 범위에서 함수

주어지는 곡면에 대하여 10개의 수준곡선들에 대한 크기의 표현:

% clabelUsage.m : 수준곡선 크기를 그래프에 기입 clear all

x = -2:0.1:2; y = -2:0.1:2;

[X,Y] = meshgrid(x,y);

Z = (X+Y).*exp(-X.^2-Y.^2);

ct=contour(X,Y,Z,10);

clabel(ct)

-0.496 -0.386

-0.276

-0.165 -0.0551

0.0551 0.165

0.276 0.386

0.496

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

(27)

• 의 범위에서 함수

의 수준곡선에 라벨을 표시:

% clabelExam.m : clabel을 이용한 수준곡선 라벨 붙이기 x = -3:.05:3; y = -1.5:.025:1.5;

[X,Y] = meshgrid(x,y);

Z = 4*X.^2 - 2.1*X.^4 + X.^6/3 + X.*Y - 4*Y.^2 + 4*Y.^4;

cvals = [-2:.5:2 2.3 3:5 6:2:10];

[C,h] = contour(X,Y,Z,cvals);

clabel(C,h,cvals([1:2:9 10 11 14 16])) xlabel('x'), ylabel('y')

title('Six hump camel back function','FontSize',14)

(28)

• 필드 그래프

•quiver: 벡터 필드나 화살표들의 배열을 나타내는 데에 사용

•화살표들은평면 내에 간격이 동일한 점들에 위치하거나 지정된 위치에 위치

•때로는 화살표들의 척도를 조절하여 너무 크거나 너무 작게 보이지 않도록 할 필요

•보기: x축을 향하는 흡인력과 y축으로부터의 반발력의 조합에 해당하는 “등마루 점”이 있는 벡터 필드의 그래프

>> [x, y] = meshgrid(-1.1:0.2:1.1, -1.1:0.2:1.1);

>> quiver(x, -y); axis equal; axis off

(29)

• 2차원의 유체흐름 해석을 위한 quiver 함수의 사용: 먼저 2차원 데이터를 작성하고 gradient 함수로 기울기를 계산한 다음 contour 함수를 이용하여 수준곡선을 나타낸 후 이 그래프를 hold하고 quiver 함수로 각각의 벡터를 표시

• 에서 함수 에 대한 quiver의 사용:

% quiverUsage.m : quiver 함수의 사용예 clear all

x = -2:0.2:2; y = -2:0.2:2;

[X,Y] = meshgrid(x,y);

Z = (X+Y).*exp(-X.^2-Y.^2);

[dX dY]=gradient(Z,0.5,0.5);

contour(X,Y,Z,10);

hold on

quiver(X,Y,dX,dY) hold off

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

(30)

• 극좌표 그래프

• polar 함수 이용의 보기: 의 범위에서 의 그래프를 작성

>> th = 0:pi/180:6*pi;

>> r = 1 + 2*cos(th);

>> polar(th,r)

1 2

3

30

210

60

240

90

270 120

300 150

330

180 0

(31)

• 막대그래프

• bar 함수

• 보기: 시험결과 55점 받은 학생이 6명, 68점 받은 학생이 12명, 76점 받은 학생이 18명, 80점 받은 학생이 11명, 그리고 95점 받은 학생이 4명이라 하고 점수를 x축, 학생수를 y축으로 하는 막대그래프를 작성

>> x=[55 68 76 80 95];

>> y=[6 12 18 11 4]

>> bar(x,y)

55 68 76 80 95

0 2 4 6 8 10 12 14 16 18

(32)

• 보기: 어느 학교에서 각 반별로 수능 1~5등급에 해당하는 학생 수 - 수능등급을 가로축 으로, 학생 수를 세로축으로 하고 bar와 barh 함수를 이용

1 1반 2반 3반

1등급 5 7 4

2등급 12 11 15

3등급 19 20 17

4등급 7 6 5

5등급 2 1 3

% gradeBar.m : bar 및 barh 함수를 이용한 막대그래프의 보기 clear all

x = [1 2 3 4 5];

class1 = [5 12 19 7 2]'; % 열 벡터 class2 = [7 11 20 6 1]';

class3 = [4 15 17 5 3]';

y = [class1 class2 class3]; % 학생수 행렬 subplot(1,2,1)

bar(x,y)

xlabel('Class'), ylabel('Number of students');

legend('Class1','Class2','Class3') subplot(1,2,2)

barh(x,y)

xlabel('Number of students'), ylabel('Class'),;

legend('Class1','Class2','Class3')

1 2 3 4 5

0 2 4 6 8 10 12 14 16 18 20

Class

Number of students

Class1 Class2 Class3

0 5 10 15 20

1 2 3 4 5

Number of students

Class

Class1 Class2 Class3

(33)

• hist 함수

•데이터의 분포를 구간별로 보여주는 히스토그램을 생성

•보기: 임의의 수 1000개로 이루어지는 데이터를 20개의 동일간격으로 분류하여 표시

>> hist(randn(1000,1),20)

-3 -2 -1 0 1 2 3

0 20 40 60 80 100 120

• hist에 대한 첫 번째 인수 y는 데이터 벡터이며 두 번째 인수는 저장소들의 수를 지정하는 스 칼라이거나 저장소들의 중간점들을 정의하는 벡터

• y만 제공되면 10개의 저장소가 사용되며 출력인수가 지정되지 않으면 hist는 막대 그래프를 생성

• 출력인수를 지정하는 경우 첫 번째 출력인수로 빈도 수, 두 번째 출력인수로 저장소 위치들을 지정

• 입력 y가 행렬이면 각 열들에 대하여 저장소들이 만들어지며 분류된 막대그래프들이 생성

(34)

• hist 함수의 사용

% histExam.m : hist 함수의 사용 clear all

randn('state',1)

y = exp(randn(1000,1)/3);

subplot(2,2,1) hist(y)

title('1000-by-1 data vector, 10 bins') subplot(2,2,2)

hist(y,25)

title('25 bins') subplot(2,2,3)

hist(y,min(y):.1:max(y)) title('Bin width 0.1')

Y = exp(randn(1000,3)/3);

subplot(2,2,4) hist(Y)

title('1000-by-3 data matrix')

0 0.5 1 1.5 2 2.5 3

0 50 100 150 200 250 300

1000-by-1 data vector, 10 bins

0 0.5 1 1.5 2 2.5 3

0 50 100 150

25 bins

0 0.5 1 1.5 2 2.5 3

0 50 100 150

Bin width 0.1

0 1 2 3 4

0 100 200 300 400

1000-by-3 data matrix

(35)

• 면적 그래프

• area 함수

• 포개 올려진 면적그래프를 생성

• 수능 등급별 학생수를 area 함수를 이용하여 표현

% gradeArea.m : 면적 그래프의 보기 clear all

x = [1 2 3 4 5];

class1 = [5 12 19 7 2]'; % 열 벡터 class2 = [7 11 20 6 1]';

class3 = [4 15 17 5 3]';

y = [class1 class2 class3]; % 학생수 행렬 area(x,y)

1 1.5 2 2.5 3 3.5 4 4.5 5

0 10 20 30 40 50 60

Number of students

Class1 Class2 Class3

•벡터 인수들을 취하는 경우 area 함수는 y 값들과 0(혹은 두 번째 인수로 지정된 수준) 사이의 면적이 색으로 채워지는 것을 제외하고는 plot과 유사

•행렬 인수의 경우에는 열 들의 그래프가 포개 올려지며 각 x 값에서의 합이 display

(36)

• area 함수 사용의 보기:

% areaUsage.m : area 함수의 사용 clear all

randn('state',1)

x = [1:12, 11:-1:8, 10:15]; Y = [x' x'];

subplot(2,1,1)

area(Y+randn(size(Y))) subplot(2,1,2)

Y = Y + 5*randn(size(Y));

area(Y,min(min(Y))) axis tight

2 4 6 8 10 12 14 16 18 20 22

0 10 20 30

2 4 6 8 10 12 14 16 18 20 22

0 10 20 30

(37)

• pie 함수

• 보기: 수능 시험 결과 등급별 학생 수의 분포는 1등급 16명, 2등급 38명, 3등급 56명, 4 등급 18명, 그리고 5등급 6명으로 나타났다고 하고 이를 pie 함수를 이용하여 파이 차트로 display:

>> x=[1 2 3 4 5]

>> y=[16 38 56 18 6]

>> pie(x,y)

>> legend('grade 1', 'grade 2','grade 3','grade 4','grade 5')

7%

13%

20%

27%

33%

grade 1 grade 2 grade 3 grade 4 grade 5

(38)

• 계단모양 그래프

• stairs: 이산 데이터 표시에 편리

• 보기: 의 범위에서 에 대한 계단모양 그래프:

>> x = 0:0.1:2*pi;

>> y = sin(x);

>> stairs(y)

0 10 20 30 40 50 60 70

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

• stairs 함수로부터 계단모양 데이터를 얻은 다음 plot 함수를 이용하여 계단모양 그래프 를 얻는 것도 가능

• 보기: >> x = 0:0.1:2*pi;

>> y = sin(x);

>> [xd, yd] = stairs(y);

>> plot(xd, yd)

(39)

• stem 그래프

• 이산 신호의 임펄스 응답을 나타낼 때 이용

• stairs 함수와 같은 용도로 사용

>> x = 0:0.1:2*pi;

>> y = sin(x);

>> stem(y)

0 10 20 30 40 50 60 70

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

(40)

•errorbar 그래프

• 나타낸 데이터의 신뢰도 등을 표시할 때 편리

• 데이터와 오차 데이터를 지정: 오차 데이터의 1번째는 오차의 상한, 2번째는 오차의 하한

>> x = 0:0.5:2*pi;

>> y = sin(x);

>> lowlimit = 0.1*ones(size(x));

>> highlimit = 0.3*ones(size(x));

>> errorbar(x,y,lowlimit,highlimit)

-1 0 1 2 3 4 5 6 7

-1.5 -1 -0.5 0 0.5 1 1.5

(41)

•다각형 채우기: fill 함수

• plot과 유사한 방법으로 작용

• fill(x,y,[r g b]): 꼭지점이 x(i), y(i)로 지정되는 다각형을 색으로 fill

• 점들은 순서대로 취하여지며 마지막 꼭지점은 첫 번째 꼭지점과 연결

• 칠해지는 색깔은 세 번째 인수 [r g b]에 의하여 결정

• r, g 및 b는 [0,1] 범위의 스칼라로서 각각 다각형을 채우는 색에서의 빨강, 초록, 그리고 파랑의 수준을 결정

• 보기: fill(x,y,[0 1 0])은 순수한 초록으로, fill(x,y,[1 0 1])은 자홍색으로 다각형 내부를 fill

• 빨강, 초록, 파랑을 똑같은 양으로 지정하면 검정([0 0 0])과 흰색([1 1 1]) 사이에서 변할 수 있는 회색으로 fill

>> x = [2 1 4 3]; y = [1 3 5 2];

>> fill(x,y,[1 0 1])

1 1.5 2 2.5 3 3.5 4

1 1.5 2 2.5 3 3.5 4 4.5 5

(42)

MATLAB의 2차원 그래프 함수

• MATLAB 내장 2차원 그래프 함수:

함수 생성되는 그래프

plot, ezplot 간단한 x-y 그래프

loglog 축들이 로그 척도인 그래프

semilogx x 축이 로그 척도인 그래프

semilogy y 축이 로그 척도인 그래프

plotyy 왼쪽과 오른쪽에 y 축이 있는 x-y 그래프

polar, ezpolar 극좌표 그래프

fplot 함수 그래프 작성

fill 다각형 채우기

area 면적이 색으로 채워진 그래프

막대 그래프 bar

barh 수평 막대 그래프

hist 히스토그램

pie 파이 차트

comet 동영상화시킨 혜성모양의 x-y 그래프

errorbar 에러표시 막대그래프

quiver 속도벡터 그래프

참조

관련 문서

이때 정점을 그래프에서 분리시키는 간선은 제거할 수 없으므로 이런 경우에는 그 다음으로 가중치가 높은

Fitted with an integrated sideshift and tilting car- riage as standard, the uniquely designed triplex fixed mast has no central lift cylinder which, together with the

 authors와 books를 authors의 surname 값과 books의 name 값이 같은 자료를 한 행으로 하여 합친다... 사용예를

• 스윕 차트(Sweep Chart)는 데이터가 오른쪽 테두리에 닿을 때 플롯이 지워 지는 것이 아니라 이동하는 수직선이 새 데이터 시작을 표시하고 새 데이터 가

그래프

변환의 기하학을 쉽고 재미있게 소개하는 교육과정의 일부분이 되고 있다. 또한, 이러한 테셀레이 션 활동은 예술적 창조와 기하학적 탐구를 가능하게 한다.. 그는

• 그래프 이론 (graph theory) : 그래프를 문제해결의

semilogx x축에 대해서는 log배율, y축에 대해서는 선형 배율로 된 그래프 semilogy x축에 대해서는 선형 배율, y축에 대해서는 log배율로 된 그래프