Loading
2015.02.07 02:12 - JeaYoung

MATLAB으로 막대그래프 그리기

This article is written for Korean

여는 말

대학교에서 레포트나 논문을 작성할 때 막대그래프를 이용하여 데이터를 표기할 때가 있습니다. 보통은 데이터만 표기하기 위해 도표함수만 사용하는 경우가 아주 많습니다. 하지만 그래프를 표기할 때는 몇 가지 지켜야할 양식이 빠져있어 레포트감점이나 논문거절을 당하는 경우가 종종 있습니다. 이 양식은 독자가 본문의 내용을 잘 모르고 도표를 본다는 가정하고 내용 전달을 쉽게 하기 위해 도움을 주기 위한 최소한의 표기입니다. 좋은 글에는 꼭 좋은 양식을 가지는 도표가 있습니다. 이 포스팅에서는 MATLAB을 이용하여 막대그래프를 표시하고(과정 1), 거기에 적절한 양식들을 채우는 방법(과정 2)을 소개해 드립니다.

데이터

아래의 표는 온도가 변하는 어떤 환경에서 수소이온농도를 측정한 값을 나타낸 것 입니다. 이 데이터를 막대그래프로 그려보겠습니다.

[ 표1.온도에 따른 수소이온농도의 변화 ]

과정 1

2차원 데이터쌍을 개별적으로 나타낸 bar 함수로 최대한 간단히 표현하겠습니다.

< 실행코드 1 >

T = [ 20 35 50 ]; % 측정 온도
Data1 = [ 9.15 9.07 8.91 ]; % 실험값
Data2 = [ 9.22 9.10 9.01 ]; % 이론값
Data = [ Data1; Data2 ];
 
bar(T',Data') % bar함수의 입력은 column vector입니다.

< 실행결과 1 >
위의 코드를 실행하면 아래와 같은 그래프를 얻을 수 있습니다.

[ 그림 1. 데이터를 막대그래프로 간단한 막대그래프로 표현 ]


결과를 살펴보면 가장 간단하게 결과를 보여주기 때문에 어떤 것이 실험값인지, 이론값인지 구분할 수 없습니다. 그리고 값들의 분포가 9 근처에서 잘 파악하기 어렵게 되어 있습니다. 따라서 보정이 필요합니다.

과정 2

2차원 데이터쌍을 개별적으로 나타낸 bar함수로 적절한 양식을 적용하여 표현하겠습니다. 과정 1에 필요한 양식을 정리하면 다음과 같습니다.

1. 범주: 도표의 어떤 항목이 가리키는 글의 항목이 무엇인지 표시
2. 범위: 정의역 혹은 치역을 데이터를 구분하기 좋게 설정
3. 축: 정의역과 치역의 각 축이 의미하는 데이터와 그 단위를 표시
4. 눈금: 주요한 값들을 표시하여 독자가 정확한 값을 알수 있게 표시

위 사항들을 반영하여 막대그래프를 작성합니다.

< 실행코드 2 >

T = [ 20 35 50 ]; % 측정 온도
Data1 = [ 9.15 9.07 8.91 ]; % 실험값
Data2 = [ 9.22 9.10 9.01 ]; % 이론값
Data = [ Data1; Data2 ];
Tick_Data = sort(Data(1:end)); % 표기하는 값을 순차적으로 정리
Step_Data = mean(diff(Tick_Data)); % 데이터 간격의 평균값
 
bar(T',Data')
title('Bar Diagram of Data') % 타이틀 지정
xlabel('Temperature (˚C)') % 가로축 지정
ylabel('Potential of Hydrogen (pH)') % 세로축 지정
xlim([10 60]) % 가로정의역 지정
ylim([Tick_Data(1)-Step_Data Tick_Data(end)+Step_Data]) % 치역 지정
set(gca,'YTick',Tick_Data) % 세로눈금을 조절
grid on % 격자표기
 
H_legend = legend('실험값','이론값'); % 범주설정, Handle반환
set(H_legend,'Fontname','나눔고딕') % Handle로 범주 글씨체 변경

< 실행결과 2 >
위의 코드를 실행하면 아래와 같은 그래프를 얻을 수 있습니다.

[ 그림 2. 데이터를 막대그래프와 양식을 갖추어 표현 ]


그림 1과 2를 비교해 보면 그림 2가 훨씬 보기에 편하고 정보를 올바르게 파악할 수 있는 것을 알 수 있습니다.

그래프는 보는 사람들로 하여금 내용을 잘 파악할 수 있도록 쉽고 친절하게 정보를 알려줘야 합니다. MATLAB에서는 이러한 기능이 잘 구현되어 있기 때문에 이런 기능들을 적극적으로 이용한다면 우수한 문서를 작성할 수 있을 겁니다.

'MATLAB' 카테고리의 다른 글

MATLAB으로 막대그래프 그리기  (1) 2015.02.07
  1. JSH 2016.10.27 10:19 신고

    매트랩 관련 bar graph에서 패턴을 넣는 부분에서의 질문입니다.




    먼저 코드는 아래와 같습니다.




    ////////////////////////////////////////////////////////////////////////////




    semantic = [ 0.1 0.3 0.5 0.7 0.9 ];
    measure = [ 0.08 0.28 0.5 0.71 0.93 ];
    human = [ 0.07 0.31 0.62 0.8 0.91 ];
    score = [ measure; human ];

    bar(semantic',score')
    set(gca,'fontname','times new roman','fontsize',10)
    xlabel('semantic score sampling using fitness function')
    ylabel('score')
    set(gca,'xtick',[0.1:0.2:1])
    set(gca,'ytick',[0:0.2:1])
    H_legend = legend('measure score','human score')

    applyhatch_pluscolor(gcf, '-x', 0, [1 0],150);

    set(gca,'xticklabel',char('0~0.2', '0.2~0.4', '0.4~0.6', '0.6~0.8','0.8~1.0'))




    ////////////////////////////////////////////////////////////////////////////







    여기서 제가 지금 궁금하고 하고싶은 부분이 막대그래프에 임의의 패턴(무늬,빗금)을 넣고 싶어서
    applyhatch_pluscolor( )을 넣었습니다.


    그런데 계속 "Undefined function 'applyhatch_pluscolor' for input arguments of type 'double'."
    오류 메세지만 나오고 제가 원하는대로 동착을 하지 않네요;;


    아마도 파라메타값을 잘못 넣어준거 같기도한데.. 제가 무엇을 잘 못 하였는지 알려주실수 있나요?

    또는 올바른 파라메타를 알려주실 수 있나요?

    하루정도 구글링을 해봐도 해결이 되지 않네요;;

Enter comment