본문 바로가기
지식공학/Matlab

Matlab 그래프 명령어 정리 (plot)

by Eric87 2020. 11. 2.
반응형

안녕하세요 공학도 Eric입니다. 공대뿐만 아니라 모든 학문에서 그래프를 잘 표시해야 합니다. 한눈에 들어오도록 잘 정리된 그래프는 누구나 이해하기 쉽게 만들어 주기 때문입니다. Matlab에서는 여러 명령어를 사용해서 그래프를 설정하도록 하는 명령어들이 많이 있습니다. 그중 가장 유용한 명령어를 설명하면서 정리했습니다. 잘 정리해 놓고 그래프 사용할 때마다 사용하면 될 듯합니다.

 x=-2*pi:pi/60:2*pi;  # x값 설정
 # theta = linspace(0,2*pi);  # 값 설정
 y1=sin(x);
 y2=cos(x);
 plot(x,y1,'linewidth',2,'color','r') #그래프 그리기
 hold on  # 창유지
 grid on  # 눈금그리기
 xlabel('Time [T]','fontsize',15) #x축 이름
 ylabel('Altitude [m])','fontsize',15) #y축 이름
 title('Time - Altitude','fontsize',15) # 그래프 제목
 legend('sin','cos') #범례
 plot(x,y2,'--','linewidth',2,'color','b') # 그래프 그리기 (점선)
 xlim([-10 5]) # x축 범위
 ylim([-1.2 1.2]) # y축 범위
 xticks(-10:2:5) # x축 간격설정 

먼저 간단한 함수로 그래프를 그리기 위해 예를 들어 보겠습니다. Sin과 Cos을 이용해서 간단한 주파수 함수를 예로 들겠습니다.

>> x=-2*pi:pi/60:2*pi;

>> y1=sin(x);

>> y2=cos(x);

2*pi*f값이 pi/60 즉, f가 1/120인 주파수를 갖고 +/- 2*pi범위를 주고 y1은 sin함수로 y2는 cos함수를 만들었습니다. plot명령어를 사용하면 됩니다. 이때 plot(x값, y값)으로 입력하면 됩니다.

Sin 함수

저렇게 하고 그래프를 끝내기에는 너무 휑하죠. 여기에 명령어를 하나씩 추가시키겠습니다. 먼저 그래프 안에 눈금이 없어 읽기가 힘듭니다. grid on을 입력하면 좀더 편해집니다.

>> grid on

cos함수도 같이 그려야 하겠죠? 저 상태에서 graph를 추가하기 위해서는 plot을 사용하면 안 됩니다. 이전 plot이 사라지고 새로운 그래프가 그려지기 때문입니다. hold on을 먼저 쓰고 plot을 추가시켜줍니다.

>> hold on

>> plot(x,y2)

sin 함수, cos 함수


Matlab에서는 그래프가 하나 추가되면 색깔이 자동으로 바뀝니다. 파란색은 sin함수이고 빨간색은 cos함수입니다. 이렇게만 해놓으면 작성자만 구별할 수 있고 다른 사람은 무엇이 sin인지 파악하기 위해서는 그래프 파형을 자세히 봐야 합니다. 한눈에 보기 힘들죠 이럴 때 범례를 사용해서 표시를 해줄 수 있습니다.

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

legend

legend 명령어로 범례를 넣어줄 수 있습니다. 첫 번째 plot은 sin함수이고 두 번째 plot이 cos함수 이므로 순서대로 sin, cos을 입력해줍니다. 얼추 내부는 정리가 되었는데 x축과 y축이 무엇인지 알려줘야겠죠? x축을 시간이라고 하고 y축은 크기라고 이름을 부여하도록 하겠습니다.

>> xlabel('Time [T]','fontsize',15)

>> ylabel('Altitude [m]','fontsize',15)

x축 이름은 xlabel, y축 이름은 ylabel이라고 하고 작은따옴표 안에 이름을 적어주면 됩니다. 추가로 폰트 크기를 정할 수 있습니다. fortsize다음 숫자를 적어주면 비례해서 글씨가 커집니다. 저는 축 이름을 적을 때 대괄호 안에 물리 단위를 적어 줍니다. 그럼 더 쉽게 알아볼 수 있겠죠?

처음 그래프보다 빠르게 이해할 수 되었습니다. 그래프의 제목도 붙여보도록 하죠

>> title('Time - Altitude','fontsize',15)

title을 사용하면 graph가 무엇을 나타내고 있는지 적을 수 있습니다.

그래프를 나타내는 선이 얇게 느껴져 조금 굵게 나타냄으로써 축과 다른 선의 느낌을 주도록 해보겠습니다. 기존 plot에서 뒤에 명령를 추가하면 됩니다. 선에 두께를 주고 선색도 바꿔보도록 하겠습니다.

>> plot(x,y1,'linewidth',2,'color','r')

>> plot(x,y2,'linewidth',2,'color','b')

linewidth는 선 폭을 정할 때 쓰고 color는 선의 색깔을 부여할 때 사용하는 명령어입니다.  색깔은 r은 빨강 b는 파랑 등 다양한 단축어가 있어 해당 색깔 단축어를 정리해 놓았습니다. (y-노랑, m-보라, c-청록, r-빨강, g-초록, b-파랑, w-흰 , k-검정)

확실히 graph에서 함수만 눈에 들어오네요. 여기서 plot을 다시 입력했기 때문에 범례에 data가 추가되었습니다. 이는 legend에서 다시 이름을 부여해주면 됩니다. 범례에서는 선 스타일까지 반영해서 나타내 주고 있습니다. 실선이 아니라 점선 및 다른 모양으로 나타낼 수 있습니다.

>> plot(x,y2,'--','linewidth',2,'color','b')

'--'을 이용하면 점선으로 표시할 수 있습니다. 흑백으로 출력이 되면 색깔로 구별이 불가능할 것입니다. 이때는 --대신 o를 입력하면 원 마크로 함수를 나타낼 수 있어 구별이 가능합니다.

마지막으로 x축과 y축의 최솟값과 최댓값을 작성자가 원하는 값으로 표시를 하는 방법입니다. 현재 x값의 범위 -2*pi와 +2*pi값이므로 자동으로 최소값과 최대값을 포함하는 범위로 그래프가 그려집니다. 하지만 xlimylim을 사용하면 원하는 값으로 그래프 범위를 설정해 줄 수 있습니다.

>> xlim([-10 5])

>> ylim([-1.2 1.2])

대괄호 안에 원하는 최소값과 최대값을 입력하면 됩니다.

이외에도 x축과 y축의 간격을 내가 원하는 값으로 설정할 수 있습니다. xticks()이라는 명령어를 사용합니다. xticks(최소값:간격:최대값). 위 그래프에서 표시되는 x축의 최소값은 -10, 최대값은 5입니다. 5단위로 x축의 간격이므로 이를 2로 좀더 조밀하게 표시해보겠습니다.

>>xticks(-10:2:5)

이렇게 하면 x축이 2 간격으로 grid가 생기는 것을 확인 할 수 있습니다.

반응형

댓글