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()함수를 이용하면 하나의 그래프 창에 여러개의 그래프를 분할하여 도시할 수 있다.



Posted by 살레시오
,