프로그래밍/python

matplotlib으로 막대차트 그리기

콘파냐 2017. 6. 3. 17:44
반응형

이전에 matplotlib의 기본적인 내용을 설명했었다. matplotlib을 사용해서 다양한 방법으로 시각화하는 방법을 오늘부터 하나하나씩 정리하려 한다. 

사용되는 코드는 완벽하게 효율적이지 않을 수 있다. 우선 다양한 시각화에 대한 설명을 한 후 여건이 되면 코드의 효율성을 논하되 생략할 수도 있다.

중간에 끊기는 내용이 있다면 다음 포스팅으로 이어진다.

...

bar 함수를 사용하면 막대차트를 그릴 수 있다. 이전 포스팅에서 plot 함수로 그래프를 그렸는데 그냥 plot 대신 bar를 쓰면 된다. 표현방식만 바뀌었기 때문에 나머지 코드는 동일하다.

  • plot 함수로 그래프 그리기

range(len(data)) : data의 원소의 개수만큼의 범위(0, 1, 2, 3)를 가진 range 객체를 생성 ( [0, 1, 2, 3] 과 동일 )

  • bar 함수로 막대차트 그리기

다른 코드는 그대로 쓰고 plot 을 bar로 바꿨을 뿐이다.

  • 막대차트의 굵기 설정하기

width 옵션으로 막대의 굵기를 설정하는데 이 값은 x 좌표의 범위를 의미한다. 위 예의 경우는 x 좌표가 1 증가할 때마다 막대가 하나씩 그려져 있으므로 width를 1로 하면 막대간 간격이 없어진다.

  • 막대 차트 여러개 그리기

W_는 막대차트의 굵기로 사용하기위해 선언한 변수다.

리스트 내포 (list comprehension)

[i+W_ for i in range(len(data1))]

영어의 숙어같은 리스트를 만드는 파이썬의 이디엄(idiom)이다. 이 표현은 다음을 축약한 것이다.

mylist = []

for i in range(len(data1)):

    mylist.append(i+W_)

  • 누적 막대차트 그리기

리스트 대신 numpy의 array를 사용해서 데이터를 생성한 이유는 data+data1연산을 위해서다. 누적 막대차트를 그리기 위해서는 각 막대차트를 그릴 때 bottom 옵션에 현재까지 누적된 데이터 집합을 전달해 줘야한다. 그런데 리스트를 사용하면 data+data1 연산은 data와 data1 리스트의 항목을 연결한 리스트를 만든다. 반면에 array객체를 사용하면 항목끼리 더해주므로 쉽게 누적 데이터 집합을 구할 수 있다.

bar 함수에 color 옵션을 추가하면 막대의 색을 바꿀 수 있다.

ex) color="#5233aa"

아직까지는 x와 y의 값에 수치만 사용했는데 이 값을 문자열로 바꾸는 방법도 있다. 이 부분은 좀 더 공부한 후에 정리해서 포스팅할 예정.

반응형