축 (axis) 속성 MATLAB 은그래프가화면에서가능한한많은공간을이용할수있도록직사각형모양의좌표계를만듬 t = 0:0.1:2*pi; x = 2 * cos(t); y = 2 * sin(t); plot(x, y); axis auto axis equal axis 명령어옵션 axis auto axis equal axis square axis image 의미 기본축한계로되돌아감 x, y, z 축의 unit 이동등한크기를갖도록설정 축박스를정사각형으로설정 axis equal + axis tight axis square 1
축 (axis) 속성 아래와같이타원형그래프를그려서, axis equal 과 axis square 가어떻게다른지확인해봅시다. t = 0:0.1:2*pi; x = 2 * cos(t); y = 4 * sin(t); plot(x, y); 2
축 (axis) 속성 아래와같이타원형그래프를그려서, axis equal 과 axis square 가어떻게다른지확인해봅시다. t = 0:0.1:2*pi; x = 2 * cos(t); y = 4 * sin(t); plot(x, y); axis equal axis square 3
축눈금표시 축의속성 xtick, xticklabel 변경 x = 0:0.1:2*pi; xlabel = linspace(0, 2*pi, 5); w = '0 pi 0.5 pi 1 pi 1.5 pi 2 pi'; plot( x, sin(x) ); set(gca, 'xtick', xlabel, 'xticklabel', w); 4
Handle Graphics Object 한그래프는여러그래픽오브젝트들의조합으로만들어짐 Figure Object Line Object Axes Object Text Object Handle 이란? MATLAB 이그래픽오브젝트에부여하는고유의식별아이디 Handle 은왜필요한가? 그래프 figure 가여러개생성되어있을때, 첫번째 figure 의속성을바꾸고싶다면? 첫번째 figure 의 handle 로접근이가능 5
Handle Graphics Object set 함수 매개변수로지정한그래픽오브젝트의속성을변경 set( handle, propertyname, propertyvalue, propertyname, propertyvalue, ) Figure 의 Handle >> set( 1, color, w ) 특성이름 (propertyname) 특성값 (propertyvalue) 6
propertynames, propertyvalues >> set(1) Alphamap CloseRequestFcn: string -or- function handle -or- cell array Color Colormap CurrentAxes CurrentCharacter CurrentObject CurrentPoint DockControls: [ {on} off ] FileName IntegerHandle: [ {on} off ] InvertHardcopy: [ {on} off ] KeyPressFcn: string -or- function handle -or- cell array KeyReleaseFcn: string -or- function handle -or- cell array MenuBar: [ none {figure} ] Name NextPlot: [ new {add} replace replacechildren ] NumberTitle: [ {on} off ] PaperUnits: [ {inches} centimeters normalized points ] PaperOrientation: [ {portrait} landscape rotated ] PaperPosition PaperPositionMode: [ auto {manual} ] PaperSize PaperType: [ {usletter} uslegal A0 A1 A2 A3 A4 A5 B0 B1 B2 B3 B4 B5 arch-a arch-b arch-c arch-d arch-e A B C D E tabloid <custom> ] Pointer: [ crosshair fullcrosshair {arrow} ibeam watch topl topr botl botr left top right bottom circle cross fleur custom hand ] PointerShapeCData PointerShapeHotSpot Position Renderer: [ {painters} zbuffer OpenGL None ] RendererMode: [ {auto} manual ] Resize: [ {on} off ] ResizeFcn: string -or- function handle -or- cell array SelectionType: [ normal open alt extend ] ToolBar: [ none {auto} figure ] Units: [ inches centimeters normalized points {pixels} characters ] WindowButtonDownFcn: string -or- function handle -or- cell array WindowButtonMotionFcn: string -or- function handle -or- cell array WindowButtonUpFcn: string -or- function handle -or- cell array WindowKeyPressFcn: string -or- function handle -or- cell array WindowKeyReleaseFcn: string -or- function handle -or- cell array WindowScrollWheelFcn: string -or- function handle -or- cell array 7
그래픽오브젝트속성변경해보기 >> close all >> peaks z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2)... - 1/3*exp(-(x+1).^2 - y.^2) >> set( 1, visible, off ) >> set( 1, visible, on ) >> set( 1, pos, [230 320 360 350] ) >> set( 1, color, w ) >> set( 1, color, g, pos, [100 320 100 350] ) 8
특정 Handle 을가리키는변수 gcf (get current figure ) 현재활성화되어있는 figure window 의 handle 값을갖고있는변수 gca (get current axes ) 현재활성화되어있는 figure window 의 axes object 의 handle 값을갖고있는변수 gco (get current object) 현재활성화되어있는 figure window 에서마우스로클릭한그래프요소의 handle 값을갖고있는변수 9
특정 Handle 을가리키는변수 >> t = -2:0.01:2; >> y1 = t.^ 2; >> y2 = t.^ 3; >> plot( t, y1, t, y2 ) 파란색선마우스로선택 >> set( gco, linestyle, : ) 10
좌우 Y 축범위다르게 plot plotyy( X1, Y1, X2, Y2 ) x = 0:0.1:1; plotyy(x, sin(x), x2, 10*cos(x)); 11
여러그래프를하나의그림에나타내기 subplot(m, n, p) 또는 subplot(mnp) 그림을 m x n 영역로나누고, p 번째영역에 plot subplot(2, 2, 1); x = 0:0.1:2*pi; plot( x, sin(x) ); subplot(2, 2, 2); x = 0:0.1:10; plot( x, sin(round(x)) ); subplot(2, 2, 3); x = 0.01:0.01:2*pi; plot( x, sinc(x) ); subplot(2, 2, 4); x = 0:0.1:2*pi; plot( x, sin(x) ); hold on; plot( x, cos(2*x) ); 1 2 3 4 12
여러그래프를하나의그림에나타내기 subplot(2, 2, [1 3]); x = 0:0.1:2*pi; plot( x, sin(x) ); subplot(2, 2, 2); x = 0:0.1:10; plot( x, sin(round(x)) ); subplot(2, 2, 4); x = 0:0.1:2*pi; plot( x, cos(2*x) ); 13
Quiz 이전슬라이드의그래프와다르게, 첫번째그래프가가로로넓게펼쳐진형태의 figure 를만들어봅시다. 14
축방향거꾸로만들기 set(gca, xdir 또는 ydir 또는 zdir, rev ) x 축또는 y 축이일반적인방향의역방향으로생성되도록드로잉 x 축의값증가방향 : 왼쪽 오른쪽 에서 오른쪽 왼쪽 y 축의값증가방향 : 아래쪽 위쪽 에서 위쪽 아래쪽 t = 0:0.1:2*pi; subplot(1, 2, 1); plot( t, sinc(t) ); subplot(1, 2, 2) plot( t, sinc(t) ); set( gca, 'xdir', 'rev' ); 15
grid on/off 외의속성들 xgrid, ygrid, zgrid : 각각의좌표축에만 grid 설정 gridlinestyle : grid 라인의스타일변경 t = 0:0.001:1; y = exp(-20*t).* sin(200*t); plot(t, y); set(gca, 'xgrid', 'on', 'gridlinestyle', '-.'); 16
곡선과눈금모양설정 plot 함수에서선의굵기, marker 의크기및색상, 폰트의크기등을설정가능 >> plot(x,sin(x), '^r--', 'LineWidth', 2, 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'b') plot 함수옵션 기본값 LineWidtn 0.5 MarkerSize 6 MarkerEdgeColor auto MarkerFaceColor none FontSize 10 FontAngle normal 17
ez* 그래프드로잉함수들 18
ez* 함수 19
ezplot (2D plotter) >> ezplot( exp( x^2 ) / x ) >> ezplot( 'sin(x) + sin(y) = sin(x*y)' ) 20
ezplot (2D plotter) >> ezplot('sinc(x)', [-1, 10]) >> ezplot('x^2+y^2 = 3^2', [-pi 0.7*pi]) 21
ezplot (2D plotter) >> ezplot('cos(t)', 'cos(t)*sin(t)') >> ezplot('cos(t)', 'cos(t)*sin(t)', [0, 3]) 22
ezplot3 (3D plotter) >> ezplot3( 'cos(t)','t*sin(t)','sqrt(t) ) 23
ezplot3 (3D plotter) >> ezplot3( 'cos(t)','t*sin(t)','sqrt(t), [0, 10] ) 24
ezplot3 (3D plotter) >> ezplot3( 'cos(t)','t*sin(t)','sqrt(t), [0, 10], animate ) 25
ezcontour >> ezcontour('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2-1 1]) 26
Quiz 27
ezcontourf >> ezcontour('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2-1 1]) 28
ezcontourf >> ezcontour('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2-1 1]) 29
ezsurf >> ezsurf('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2-1 1]) 30
ezsurf >> ezsurf('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2-1 1]) 31
ezsurf >> ezsurf( 'x', 'x+y', 'sin(x)+cos(2*y) ) 32
ezsurfc >> ezsurfc('x.*exp(-x.^2 - y.^2)') 33
Quiz 34
Quiz Sol. >> ezsurf('cos(x)*cos(y)', 'sin(x)', 'cos(x)*sin(y)', [0, 2*pi]) 35
ezmesh, ezmeshc 36
ezpolar (polar coordinate plotter) >> ezpolar( 'sin(2*t)*cos(3*t)', [0 pi] ) 37
2D 그래프드로잉함수들 38
bar 그래프 >> x = [55 68 76 80 95]; >> y = [6 12 18 11 4]; >> bar(x, y); >> barh(x, y); subplot(3,1,1); bar( rand(10,5), 'stacked ); subplot(3,1,2); bar( 0:.25:1, rand(5), 1); subplot(3,1,3); bar( rand(2,3),.75, 'grouped ); 39
bar 그래프 수능등급별학생수 수능등급 1반 2반 3반 1등급 5 7 4 2등급 12 11 15 3등급 19 20 17 4등급 7 6 5 5등급 2 1 3 S = [5 7 4; 12 11 15; 19 20 17; 7 6 5; 2 1 3]; bar(s); legend( 1 반, 2 반, 3 반 ); xlabel( 등급 ); ylabel( 학생수 ); 40
bar3 그래프 수능등급별학생수 수능등급 1반 2반 3반 1등급 5 7 4 2등급 12 11 15 3등급 19 20 17 4등급 7 6 5 5등급 2 1 3 S = [5 7 4; 12 11 15; 19 20 17; 7 6 5; 2 1 3]; bar3(s) legend('1 반 ', '2 반 ', '3 반 '); xlabel(' 반 '); ylabel(' 학생수 '); ylabel(' 등급 '); zlabel(' 학생수 '); 41
hist 그래프 r = hist( Y ) 입력데이터 Y 의범위를균일하게 10 등분하여해당범위내에속하는원소들을 count >> hist( randn(1000,1) ) r = hist( Y, k ) 입력데이터 Y 의범위를균일하게 k 등분하여해당범위내에속하는원소들을 count >> hist( randn(1000, 50) ) 42
area 그래프 S = [5 7 4; 12 11 15; 19 20 17; 7 6 5; 2 1 3]; area(s); legend( 1 반, 2 반, 3 반 ); xlabel( 반 ); ylabel( 학생수 ); 43
pie 그래프 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', -1); 44
pie3 그래프 h = pie3( X ) 배열 X 를구성하는각각의원소들을하나의조각으로표현 h = pie3( X, explode ) explode 의 nonzero 에있는조각을 pie chart 중심에서이탈시켜표현 >> x = [1 3 0.5 2.5 2]; >> explode = [0 1 0 0 1]; >> pie3( x, explode ); 45
계단모양그래프 이산데이터표시등에사용될수있는그래프 >> x = 0:0.1:2*pi; >> y = sin(x); >> stairs( y ); 46
stem 그래프 이산신호임펄스응답나타낼때이용 >> x = 0:0.1:2*pi; >> y = sin(x); >> stem( y ); 47
errorbar 그래프 데이터의신뢰도표시에사용되는그래프 오차데이터지정해야함 >> 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); 48
Quiz 49
Quiz Sol. x = -2:0.01:2; n = 100; f = zeros(1, length(x)); for k=1:2:n f = f + sin(pi*k*x)/k; end plot(x,f); 50
Plot Editing 51
Plot Editing 그래프회전, 텍스트레이블, 화살표, 도형, 52