2차원 그래프
Scilab에서 2차원 그래프를 그려주는 함수들 중 자주 사용되는 것들을 다음 도표에 정리하였다.
[표 1] Scilab의 2차원 그래프 함수
함수 | 기능 |
plot() | x-y 그래프를 그려준다. |
polarplot () | 극좌표 그래프를 그려준다. |
bar(), barh() | 막대그래프 |
histplot() | 히스토그램 |
pie() | 파이차트 |
가장 많이 쓰이는 함수는 plot()함수이다.
plot() 함수
plot()함수는 가장 기본적인 2차원 x-y 그래프를 만들어주는 함수로서 사용법이 MATLAB의 그것과 매우 유사하다. 첫 번째 예로 sin(x)의 그래프를 0과 2*%pi 범위에서 그려보도록 하겠다. 먼저 x벡터를 linspace()함수를 이용하여 다음과 같이 생성한다.
>> x = linspace(0, 2*%pi) |
그 다음 y 데이터를 다음과 같이 생성한다.
>> y = sin(x) |
그럼 다음 plot()함수를 이용하면 된다.
>> plot(x, y) |
plot 함수의 내부적인 작동은 x-y 쌍의 점들을 직선으로 이어주는 것이다. 이 예에서는 100개의 (x,y) 좌표점을 서로 직선으로 연결하였으며 점들이 조밀하므로 마치 곡선처럼 보이는 것이다. 주의할 점은 x가 행벡터라면 y도 행벡터여야하고 x가 열벡터라면 y도 열벡터여야 한다는 점이다.
다른 방법으로는 x좌표만 생성한 후 두 번째 인수로 함수명을 적어주는 것이다.
>> plot(x, sin ) |
그러면 자동으로 x벡터에 대해서 sin(x)를 구한 다음 그래프를 생성해 준다. (이 방법은 별로 권장되지 않는다.)
만약 x는 행벡터이고 y가 행렬이라면 y행렬의 각각의 행에 대해서 그래프를 그려준다. 이 때 x의 열수와 y의 열수는 같아야 한다. 예를 들어서
>> Y = [sin(x); cos(x)] |
명령은 Y 행렬을 만들어 주는데 첫 행은 sin(x)함수 값들이, 두 번째 행은 cos(x)함수 값들이 대입된다. 이제
>> plot(x, Y) |
라고 하면 다음과 같이 x-Y(1,:) 과 x-Y(2, :) 에 대한 그래프를 하나의 창에 도시한다. 이 명령은 다음과 동일하다.
>> plot(x, sin(x), x, cos(x)) |
아래 결과를 보면 두 개의 그래프를 한 개의 그래프창에 도시하고 자동으로 색상이 다르게 지정되었음을 확인할 수 있다.
함수 plot()의 세 번째 옵션으로 선의 색과 모양을 지정해 줄 수 있다. 아래 표에 자세한 옵션을 정리하였다. (MATLAB의 옵션과 매우 흡사하다.)
[표 2] plot()함수에서 선의 모양 지정자
색 기호 | 선 색 | 모양 기호 | 모양 | 마커 기호 | |
r | red | - | 직선(solid line) | + | Plus sign |
g | green | -- | 파선(dashed line) | o | Circle |
b | blue | : | 점선(dotted line) | * | Asterisk |
c | cyan | -. | 일점쇄선 (dash-dotted line) | . | Point |
m | magenta | x | Cross | ||
y | yellow | 's' | Square | ||
k | black | 'd' | Diamond | ||
w | white | ^ | Upward-pointing triangle | ||
v | Downward-pointing triangle | ||||
> | Right-pointing triangle | ||||
< | Left-pointing triangle | ||||
'p' | Five-pointed star (pentagram) | ||||
No marker (default) |
이 세 가지 옵션을 조합하여서 다양한 선의 모양을 나타낼 수 있다. 예를 들어서 파란색 파선으로 그리고 싶다면 ‘b--’ 라고 세 번째 옵션으로 주면 된다.
>> plot(t, sin(t), ‘b--’) |
실선을 유지하고 녹색원으로 마킹을 하려면 ‘g-o’라고 입력하면 된다.
>> plot(t, cos(t), ‘g-o’) |
그래프 축에 격자선(grid)을 추가하려면 xgrid(n)함수를 실행시키면 된다. n은 자연수로서 격자선의 색을 지정한다. 예를 들면 다음과 같다.
>> plot(t, cos(t), ‘r:’)>> xgrid(2) |
이 그림을 보면 xgrid(2) 명령에 의해서 파란색 격자선이 x축과 y축에 생겼음을 알 수 있다.
그래프의 축의 범위를 지정하려면 mtlb_axis()라는 함수를 이용하면 된다.(Matlab의 axis라는 함수와 유사하게 만들어진 함수임) 예를 들어서 위 그래프에서 x축의 범위를 정확히 [0, 2pi] 범위로 맞추고 y축은 [-2, 2]로 넓히고 싶다면 다음과 같이하면 된다.
>> mtlb_axis([0 2*%pi -2 2]) |
또한 이 그림에 제목을 붙이려면 title() 함수를 이용한다.
>> title(‘sin and cos’) |
그러면 그림의 상단에 그럼의 제목(title)이 생성된다. x축에 제목을 붙이는 함수는 xlable()이고 y축은 ylabel()함수를 사용한다.
>> xlabel(‘x-axis’)>> ylabel(‘y-axis’) |
타이틀과 x축, y축을 한꺼번에 지정하고 싶다면 xtitle()함수를 이용하면 된다.
>> xtitle(‘sin and cos’, ‘x-axis’, ‘y-axis’) |
입력 인수는 차례대로 제목, x축 라벨, y축 라벨로 표시할 문자열이다. 만약 각각의 라벨을 사각형으로 둘러쌀려면 마지막 옵션으로 1을 주면 된다.
>> xtitle(‘sin and cos’, ‘x-axis’, ‘y-axis’, 1) |
재미있는 것은 title(), xaxis(), yaxis, xtitle() 명령은 LaTeX 명령어를 사용할 수 있어서 미려한 수식을 출력할 수 있다. 예를 들면 다음과 같다.
>> title(‘$\frac{sin(x)}{x}$’) |
여러 개의 그래프를 하나의 그래프 창에 도시하려면 subplot(r,c,n)함수를 사용하면 되는데 현재 그래프 창을 r행 c열로 분할한 다음 그 중 n번을 선택한다. 예를 들면 다음과 같다
>> subplot(2,1,1) // ❶>> plot(t,sin(t),'b:+')>> subplot(2,1,2) // ❷>> plot(t,cos(t),'k-.') |
위의 ❶에서 subplot(2,1,1)이라고 입력했는데 이것은 현재 그래프 창을 2x1 으로 분할한 다음 그 중 1번째 자식창을 선택한다. 따라서 그 다음에 오는 plot()함수는 그 1번 자식창에 그려진다. ❷에서는 subplot(2,1,2) 라고 했는데 2번째 자식창을 선택하는 것이다. 아래 결과를 보면 이 명령의 동작이 이해가 갈 것이다.
subplot(2,1,1) 은 subplot(211)이라고 숫자들 길 그냥 붙여서 쓸 수도 있다. 예를 들어서 subplot(221)이라면 2x2로 나누고 그 중 첫 번째 자식창을 선택하라는 것이다. 이와 같이 subplot()함수를 이용하면 하나의 그래프 창에 여러개의 그래프를 분할하여 도시할 수 있다.
'프로그래밍언어.Lib > Scilab' 카테고리의 다른 글
싸이랩(scialb)의 사용자 함수 개요 (0) | 2015.07.21 |
---|---|
싸이랩(scialb)의 그래프창 생성/소멸/지정 (0) | 2015.07.21 |
싸이랩(scialb)의 for 반복문 (0) | 2015.07.20 |
싸이랩(scialb)의 조건 검사 if ~ elseif ~ else ~ end (0) | 2015.07.18 |
싸이랩(scialb)의 다항식 (0) | 2015.07.18 |