🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

첫 시각화 만들기 완벽 가이드 - 슬라이드 1/8
A

AI Generated

2025. 12. 16. · 10 Views

첫 시각화 만들기 완벽 가이드

Python으로 데이터를 시각화하는 첫 걸음을 떼어봅니다. matplotlib과 pandas를 활용하여 막대 그래프를 그리고, 제목과 축 레이블을 추가하며, 색상을 커스터마이징하는 방법을 실무 상황과 함께 배워봅니다.


목차

  1. matplotlib_기초_개념
  2. plt_bar로_막대_그래프_그리기
  3. 그래프_제목과_축_레이블_추가
  4. 그래프_크기_조절하기
  5. 색상_커스터마이징
  6. plt_show와_저장하기
  7. pandas_plot_메서드_활용

1. matplotlib 기초 개념

김개발 씨는 데이터 분석팀에 입사한 지 일주일째입니다. 팀장님이 첫 업무를 주셨습니다.

"지난달 매출 데이터를 보기 좋게 그래프로 만들어주세요." 엑셀로만 그래프를 그려본 김개발 씨는 막막했습니다. 선배 박시니어 씨가 다가와 말합니다.

"Python으로 그래프를 그리면 훨씬 간편합니다."

matplotlib은 Python에서 데이터 시각화를 위해 가장 많이 사용하는 라이브러리입니다. 그래프, 차트, 히스토그램 등 다양한 시각화를 코드 몇 줄로 만들 수 있습니다.

마치 그림판이 그림을 그리는 도구이듯, matplotlib은 데이터를 그림으로 표현하는 도구입니다. 수백 개의 데이터를 한눈에 이해할 수 있게 만들어주는 강력한 도구입니다.

다음 코드를 살펴봅시다.

import matplotlib.pyplot as plt

# 데이터 준비: 월별 매출 데이터
months = ['1월', '2월', '3월', '4월', '5월']
sales = [150, 200, 180, 220, 250]

# 그래프 그리기: 간단한 선 그래프
plt.plot(months, sales)

# 화면에 그래프 표시
plt.show()

김개발 씨는 데이터 분석팀에 입사한 지 일주일째 신입 사원입니다. 오늘 아침, 팀장님이 첫 번째 업무를 주셨습니다.

"지난 5개월간 매출 데이터가 있는데, 이걸 보기 좋게 시각화해서 보고서에 넣어주세요." 김개발 씨는 엑셀로 그래프를 그려본 적은 있지만, Python으로는 처음입니다. 어떻게 시작해야 할까요?

선배 개발자 박시니어 씨가 김개발 씨의 난감한 표정을 보고 다가왔습니다. "엑셀로 하나하나 클릭하며 그래프 만들 필요 없어요.

Python의 matplotlib을 쓰면 코드 몇 줄로 끝납니다." matplotlib이란 무엇일까요? 쉽게 비유하자면, matplotlib은 마치 화가가 사용하는 붓과 팔레트 같은 것입니다. 화가가 붓으로 캔버스에 그림을 그리듯, 우리는 matplotlib으로 코드 화면에 데이터 그림을 그립니다.

숫자로 가득한 엑셀 시트보다 그래프 하나가 훨씬 이해하기 쉽습니다. 왜 matplotlib이 필요할까요? matplotlib이 없던 시절에는 어땠을까요?

데이터 분석가들은 숫자 나열된 표를 직접 눈으로 읽어야 했습니다. 100개, 1000개의 데이터를 일일이 확인하는 것은 매우 비효율적이었습니다.

더 큰 문제는 경영진에게 보고할 때였습니다. 숫자만 나열된 보고서는 핵심을 전달하기 어려웠습니다.

matplotlib의 등장 바로 이런 문제를 해결하기 위해 matplotlib이 등장했습니다. matplotlib을 사용하면 복잡한 데이터를 한눈에 파악할 수 있는 그래프로 만들 수 있습니다.

또한 다양한 종류의 차트를 자유롭게 그릴 수 있습니다. 무엇보다 코드로 작성하기 때문에 같은 형식의 그래프를 반복해서 만들 때 매우 편리합니다.

코드 살펴보기 위의 코드를 한 줄씩 살펴보겠습니다. 먼저 첫 번째 줄에서 import matplotlib.pyplot as plt로 matplotlib의 pyplot 모듈을 불러옵니다.

보통 plt라는 짧은 이름으로 사용합니다. 이것은 마치 긴 이름을 가진 사람에게 별명을 붙여주는 것과 같습니다.

다음으로 데이터를 준비합니다. months 리스트에는 월 이름이, sales 리스트에는 각 월의 매출액이 들어갑니다.

이 두 리스트가 그래프의 가로축과 세로축이 됩니다. plt.plot(months, sales)는 실제로 그래프를 그리는 명령입니다.

첫 번째 인자는 x축, 두 번째 인자는 y축 데이터입니다. 이 명령만으로 선 그래프가 메모리에 그려집니다.

마지막으로 plt.show()를 호출하면 화면에 그래프가 나타납니다. 이것은 마치 그림을 다 그린 후 액자에 걸어 전시하는 것과 같습니다.

실무 활용 사례 실제 현업에서는 어떻게 활용할까요? 예를 들어 쇼핑몰 서비스를 운영하는 회사에서 일한다고 가정해봅시다.

매일 주문 건수, 매출액, 고객 방문 수 등 수많은 데이터가 쌓입니다. matplotlib을 활용하면 이런 데이터를 실시간으로 시각화하여 대시보드를 만들 수 있습니다.

네이버, 카카오 같은 IT 기업들도 내부 데이터 분석에 matplotlib을 적극 활용하고 있습니다. 주의사항 하지만 주의할 점도 있습니다.

초보 개발자들이 흔히 하는 실수 중 하나는 plt.show()를 빼먹는 것입니다. 그래프를 그리는 코드는 작성했지만 화면에 표시하는 명령을 안 쓰면 아무것도 보이지 않습니다.

또한 주피터 노트북과 일반 Python 파일에서 동작 방식이 조금 다를 수 있으니 환경을 잘 확인해야 합니다. 정리 다시 김개발 씨의 이야기로 돌아가 봅시다.

박시니어 씨의 설명을 들은 김개발 씨는 고개를 끄덕였습니다. "이렇게 간단하게 그래프를 그릴 수 있다니!" matplotlib의 기본 개념을 제대로 이해하면 더 복잡하고 아름다운 시각화도 가능해집니다.

여러분도 오늘 배운 내용을 실제 프로젝트에 적용해 보세요.

실전 팁

💡 - matplotlib.pyplot은 보통 plt라는 이름으로 import합니다

  • plt.show()를 호출해야 그래프가 화면에 표시됩니다
  • 주피터 노트북에서는 %matplotlib inline 매직 명령을 사용하면 자동으로 표시됩니다

2. plt bar로 막대 그래프 그리기

김개발 씨는 선 그래프를 성공적으로 그렸습니다. 하지만 팀장님이 추가 요청을 하셨습니다.

"선 그래프보다 막대 그래프가 더 보기 좋을 것 같은데요?" 김개발 씨는 다시 박시니어 씨를 찾아갔습니다. "plot 대신 bar를 쓰면 됩니다.

정말 간단해요."

**plt.bar()**는 막대 그래프를 그리는 함수입니다. 카테고리별 수치를 비교할 때 가장 효과적입니다.

마치 키 재기를 할 때 막대로 높이를 비교하듯, 각 항목의 크기를 막대 길이로 한눈에 비교할 수 있습니다. 매출, 점유율, 설문 결과 등 다양한 데이터를 표현할 때 자주 사용됩니다.

다음 코드를 살펴봅시다.

import matplotlib.pyplot as plt

# 부서별 분기 매출 데이터
departments = ['영업팀', '마케팅팀', '개발팀', 'CS팀']
revenue = [4500, 3200, 2800, 2100]

# 막대 그래프 생성
plt.bar(departments, revenue)

# 화면에 표시
plt.show()

김개발 씨는 어제 배운 선 그래프로 매출 추이를 성공적으로 만들었습니다. 팀장님께 보고드렸더니 만족스러운 표정이었습니다.

하지만 바로 추가 요청이 들어왔습니다. "김개발 씨, 이번에는 부서별 매출도 시각화해주세요.

근데 선 그래프보다는 막대 그래프가 더 보기 좋을 것 같아요." 김개발 씨는 또다시 고민에 빠졌습니다. 어떻게 막대 그래프를 그릴까요?

막대 그래프는 언제 사용할까요? 쉽게 비유하자면, 막대 그래프는 마치 운동회 때 반별로 줄을 세워서 키를 비교하는 것과 같습니다. 누가 제일 크고, 누가 제일 작은지 한눈에 보입니다.

시간의 흐름을 보는 선 그래프와 달리, 막대 그래프는 서로 다른 항목들을 나란히 놓고 비교할 때 최고의 선택입니다. 왜 막대 그래프가 필요할까요? 데이터 시각화에서 막대 그래프는 매우 중요한 역할을 합니다.

예를 들어 4개 부서의 매출을 숫자로만 보면 어느 부서가 가장 잘하는지 즉시 파악하기 어렵습니다. 4500, 3200, 2800, 2100이라는 숫자를 머릿속으로 비교해야 합니다.

하지만 막대 그래프로 보면 영업팀이 가장 높고, CS팀이 가장 낮다는 것을 1초 만에 알 수 있습니다. plt.bar()의 등장 박시니어 씨가 김개발 씨에게 설명합니다.

"plot을 bar로 바꾸기만 하면 됩니다." plt.bar()를 사용하면 선 그래프 대신 막대 그래프가 그려집니다. 사용 방법은 plt.plot()과 거의 동일합니다.

첫 번째 인자에 카테고리 이름을, 두 번째 인자에 수치를 넣으면 됩니다. 정말 간단합니다.

코드 단계별 분석 위의 코드를 자세히 살펴보겠습니다. 먼저 departments 리스트에는 부서 이름이 들어갑니다.

이것이 막대 그래프의 x축이 됩니다. revenue 리스트에는 각 부서의 매출액이 들어갑니다.

이것이 막대의 높이가 됩니다. plt.bar(departments, revenue)가 핵심입니다.

이 한 줄로 4개의 막대가 그려집니다. 각 막대의 위치는 departments의 순서대로, 높이는 revenue 값만큼 정해집니다.

matplotlib이 알아서 적절한 간격과 크기로 막대를 배치합니다. 마지막으로 plt.show()로 화면에 표시합니다.

이제 영업팀의 막대가 가장 높고, CS팀의 막대가 가장 낮은 그래프를 볼 수 있습니다. 실무에서의 활용 실제 회사에서는 어떻게 쓰일까요?

마케팅 부서에서는 광고 채널별 전환율을 막대 그래프로 비교합니다. 네이버 광고, 구글 광고, 페이스북 광고 중 어느 것이 효과적인지 한눈에 파악할 수 있습니다.

인사팀에서는 직급별 인원수를 막대 그래프로 보여줍니다. 제품팀에서는 기능별 사용 빈도를 시각화합니다.

자주 하는 실수 초보자들이 주의해야 할 점이 있습니다. 가끔 데이터 개수가 맞지 않아 에러가 발생합니다.

departments에 4개 항목이 있는데 revenue에 3개만 있으면 그래프가 그려지지 않습니다. 두 리스트의 길이는 반드시 같아야 합니다.

또한 한글 폰트 설정을 하지 않으면 부서 이름이 깨져 보일 수 있습니다. 정리 김개발 씨는 코드를 실행했습니다.

"와, 정말 간단하네요!" 화면에는 4개의 막대가 선명하게 나타났습니다. 영업팀이 다른 팀보다 확실히 높은 매출을 올렸다는 것이 한눈에 보입니다.

팀장님께 보고드리니 매우 만족스러워하셨습니다. 막대 그래프는 비교가 필요한 모든 상황에서 유용합니다.

여러분도 오늘 배운 plt.bar()를 실전에 활용해 보세요.

실전 팁

💡 - plt.plot() 대신 plt.bar()만 사용하면 막대 그래프가 됩니다

  • 두 리스트(카테고리, 수치)의 길이는 반드시 같아야 합니다
  • 가로 막대 그래프는 plt.barh()를 사용합니다

3. 그래프 제목과 축 레이블 추가

김개발 씨가 만든 막대 그래프를 본 팀장님이 말씀하셨습니다. "그래프는 좋은데, 제목도 없고 축에 단위도 안 보이네요.

나중에 보면 이게 뭘 나타내는 그래프인지 모를 것 같아요." 김개발 씨는 다시 한번 검색을 시작했습니다.

제목과 축 레이블은 그래프를 설명하는 필수 요소입니다. plt.title()로 제목을, plt.xlabel()과 plt.ylabel()로 각 축의 의미를 표시합니다.

마치 책에 제목과 목차가 있어야 내용을 파악하기 쉽듯, 그래프에도 제목과 레이블이 있어야 무엇을 나타내는지 명확합니다.

다음 코드를 살펴봅시다.

import matplotlib.pyplot as plt

# 데이터 준비
months = ['1월', '2월', '3월', '4월']
sales = [150, 200, 180, 220]

# 막대 그래프 생성
plt.bar(months, sales)

# 제목과 축 레이블 추가
plt.title('2024년 월별 매출 현황')
plt.xlabel('월')
plt.ylabel('매출액 (만원)')

# 화면에 표시
plt.show()

김개발 씨는 어제 만든 막대 그래프를 팀장님께 보고했습니다. 그래프 자체는 깔끔하게 잘 나왔습니다.

하지만 팀장님의 피드백이 들어왔습니다. "김개발 씨, 그래프는 보기 좋은데 설명이 부족해요.

제목이 없어서 이게 매출 그래프인지, 비용 그래프인지 알 수 없어요. 그리고 세로축 숫자가 만원인지 억원인지도 헷갈리네요." 김개발 씨는 고개를 끄덕였습니다.

맞는 말씀이었습니다. 왜 제목과 레이블이 중요할까요? 쉽게 비유하자면, 제목과 레이블은 마치 지도의 범례와 같습니다.

아무리 예쁜 지도라도 범례가 없으면 어느 색이 산이고 어느 색이 바다인지 알 수 없습니다. 그래프도 마찬가지입니다.

숫자와 막대만 있어서는 정확한 의미를 전달할 수 없습니다. 레이블이 없던 시절의 문제 과거 데이터 분석 초창기에는 어땠을까요?

그래프를 만든 사람은 당연히 무슨 내용인지 알고 있습니다. 하지만 일주일 후, 한 달 후에 다시 보면 헷갈립니다.

"이 그래프가 뭐였더라?" 더 큰 문제는 다른 사람에게 공유할 때입니다. 매번 구두로 설명해야 하는 번거로움이 있었습니다.

matplotlib의 해결책 바로 이런 문제를 해결하기 위해 matplotlib은 제목과 레이블 기능을 제공합니다. plt.title()을 사용하면 그래프 상단에 제목을 달 수 있습니다.

plt.xlabel()과 plt.ylabel()로 각 축이 무엇을 의미하는지 표시할 수 있습니다. 이 세 가지만 추가해도 그래프의 가독성이 크게 향상됩니다.

코드 하나하나 살펴보기 위의 코드를 단계별로 분석해봅시다. 먼저 데이터를 준비하고 plt.bar()로 막대 그래프를 그립니다.

여기까지는 이전과 동일합니다. 이제 설명을 추가할 차례입니다.

plt.title('2024년 월별 매출 현황')은 그래프 맨 위에 제목을 붙입니다. 따옴표 안의 텍스트가 그대로 제목으로 표시됩니다.

이제 이 그래프가 매출 현황이라는 것을 누구나 알 수 있습니다. plt.xlabel('월')은 x축 아래에 레이블을 추가합니다.

가로축이 월을 나타낸다는 것이 명확해집니다. plt.ylabel('매출액 (만원)')은 y축 왼쪽에 레이블을 추가합니다.

숫자 단위가 만원이라는 것도 표시됩니다. 실무에서의 활용 실제 회사에서는 어떻게 활용될까요?

데이터 분석가는 하루에도 수십 개의 그래프를 만듭니다. 각 그래프마다 제목과 레이블을 명확히 붙여두면 나중에 찾아보기 쉽습니다.

특히 보고서에 여러 그래프를 넣을 때, 제목만 보고도 어떤 내용인지 파악할 수 있어야 합니다. 경영진에게 발표할 때도 그래프에 명확한 설명이 있으면 이해도가 높아집니다.

한글 폰트 문제 주의해야 할 점이 있습니다. matplotlib은 기본적으로 영어 폰트를 사용하기 때문에 한글이 깨져 보일 수 있습니다.

"2024년 월별 매출"이라고 썼는데 화면에는 네모 박스만 보이는 경우가 있습니다. 이럴 때는 한글 폰트를 따로 설정해주어야 합니다.

맑은 고딕이나 나눔고딕 같은 폰트를 지정하면 해결됩니다. 정리 김개발 씨는 코드에 세 줄을 추가했습니다.

제목, x축 레이블, y축 레이블을 넣었습니다. 다시 팀장님께 보고드렸습니다.

"오, 이제 확실히 보기 좋네요. 뭘 나타내는 그래프인지 한눈에 알겠어요." 제목과 레이블은 작은 노력으로 큰 효과를 얻을 수 있는 요소입니다.

앞으로 그래프를 만들 때는 항상 이 세 가지를 추가하는 습관을 들이세요.

실전 팁

💡 - 제목은 간결하면서도 내용을 정확히 설명해야 합니다

  • 축 레이블에는 단위를 꼭 표시하세요 (만원, 개, % 등)
  • 한글 사용 시 폰트 설정이 필요할 수 있습니다

4. 그래프 크기 조절하기

김개발 씨의 그래프는 점점 완성도가 높아졌습니다. 하지만 보고서에 그래프를 붙여넣으니 너무 작아 보였습니다.

"그래프 크기를 키울 수 있나요?" 팀장님이 물으셨습니다. 박시니어 씨가 웃으며 말합니다.

"당연하죠. plt.figure()를 사용하면 됩니다."

**plt.figure(figsize=(가로, 세로))**는 그래프의 크기를 설정하는 함수입니다. 단위는 인치이며, 기본값은 (6.4, 4.8)입니다.

마치 액자 크기를 선택하듯, 그래프를 담을 캔버스 크기를 자유롭게 조절할 수 있습니다. 보고서나 발표 자료에 맞는 적절한 크기로 만들 수 있습니다.

다음 코드를 살펴봅시다.

import matplotlib.pyplot as plt

# 그래프 크기 설정 (가로 10인치, 세로 6인치)
plt.figure(figsize=(10, 6))

# 데이터 준비
categories = ['제품A', '제품B', '제품C', '제품D', '제품E']
values = [45, 30, 55, 40, 60]

# 막대 그래프 생성
plt.bar(categories, values)
plt.title('제품별 판매량')
plt.xlabel('제품명')
plt.ylabel('판매량 (개)')

# 화면에 표시
plt.show()

김개발 씨는 이제 제법 멋진 그래프를 만들 수 있게 되었습니다. 제목도 있고, 축 레이블도 있고, 막대 그래프도 깔끔합니다.

팀장님께 보고 드리기 위해 파워포인트에 그래프를 붙여넣었습니다. 그런데 문제가 생겼습니다.

그래프가 너무 작아 보였습니다. 회의실 대형 모니터에 띄웠을 때 글씨가 잘 안 보일 것 같았습니다.

팀장님도 같은 생각이었습니다. "김개발 씨, 이 그래프 좀 더 크게 만들 수 있나요?" 왜 그래프 크기 조절이 필요할까요? 쉽게 비유하자면, 그래프 크기는 마치 사진 인화 크기를 정하는 것과 같습니다.

같은 사진이라도 명함 크기로 뽑으면 작고, A4 크기로 뽑으면 큽니다. 그래프도 마찬가지입니다.

용도에 따라 적절한 크기가 다릅니다. 기본 크기의 한계 matplotlib의 기본 그래프 크기는 생각보다 작습니다.

가로 6.4인치, 세로 4.8인치가 기본값입니다. 노트북 화면에서 볼 때는 괜찮지만, 발표 자료나 보고서에는 부족합니다.

특히 막대가 많거나 텍스트가 많으면 비좁아 보입니다. 전문적인 보고서를 만들려면 크기 조절이 필수입니다.

plt.figure()의 등장 박시니어 씨가 김개발 씨에게 방법을 알려줍니다. plt.figure()를 그래프를 그리기 전에 호출하면 됩니다.

figsize 파라미터에 튜플 형태로 (가로, 세로) 크기를 지정합니다. 단위는 인치입니다.

(10, 6)이면 가로 10인치, 세로 6인치 크기의 그래프가 만들어집니다. 코드 상세 분석 위의 코드를 자세히 들여다봅시다.

가장 먼저 plt.figure(figsize=(10, 6))이 나옵니다. 이것은 반드시 그래프를 그리기 전에 호출해야 합니다.

순서가 중요합니다. 이 명령은 "앞으로 그릴 그래프는 10x6 크기로 만들어주세요"라고 matplotlib에게 알려주는 것입니다.

그다음은 이전과 동일합니다. 데이터를 준비하고, plt.bar()로 막대 그래프를 그리고, 제목과 레이블을 추가합니다.

하지만 이번에는 모든 것이 더 큰 캔버스에 그려집니다. 막대도 크고, 글씨도 크고, 여백도 넉넉합니다.

적절한 크기 선택하기 실무에서는 어떤 크기를 사용할까요? 보고서 첨부용이라면 (8, 6) 정도가 적당합니다.

발표 자료용이라면 (12, 8) 정도로 크게 만듭니다. 논문이나 학술 자료는 (10, 6)이 표준입니다.

웹사이트에 올릴 때는 (10, 5) 같은 와이드 비율도 좋습니다. 상황에 맞게 조절하면 됩니다.

비율도 중요합니다 크기만큼 중요한 것이 가로세로 비율입니다. 막대가 가로로 긴 그래프라면 (12, 6) 같은 와이드 비율이 좋습니다.

막대가 많지 않고 세로로 길다면 (8, 10) 같은 세로 비율도 괜찮습니다. 정사각형 (8, 8)도 때로는 유용합니다.

데이터 특성에 맞는 비율을 선택해야 보기 좋습니다. 자주 하는 실수 초보자들이 주의할 점이 있습니다.

너무 큰 크기를 설정하면 파일 용량이 커지고 느려집니다. (50, 40) 같은 거대한 크기는 필요 없습니다.

또한 figsize를 plt.bar() 이후에 호출하면 적용되지 않습니다. 반드시 그래프를 그리기 전에 호출해야 합니다.

정리 김개발 씨는 코드 맨 위에 한 줄을 추가했습니다. plt.figure(figsize=(10, 6)) 다시 실행하니 그래프가 훨씬 커졌습니다.

파워포인트에 붙여넣으니 딱 적당한 크기였습니다. 팀장님도 만족스러워하셨습니다.

그래프 크기 조절은 간단하지만 효과가 큽니다. 여러분도 용도에 맞는 크기를 찾아보세요.

실전 팁

💡 - plt.figure(figsize=(가로, 세로))는 그래프 그리기 전에 호출합니다

  • 단위는 인치이며, 일반적으로 (8-12, 6-8) 범위를 많이 사용합니다
  • 저장할 때는 dpi 옵션으로 해상도도 조절할 수 있습니다

5. 색상 커스터마이징

김개발 씨의 그래프는 이제 크기도 적당하고 설명도 잘 되어 있습니다. 하지만 모든 막대가 파란색으로 똑같습니다.

디자이너 이예쁨 씨가 지나가다 말했습니다. "막대 색깔을 바꾸면 더 보기 좋을 것 같아요.

회사 브랜드 컬러도 넣어보세요!"

color 파라미터로 막대 색상을 자유롭게 변경할 수 있습니다. 색상 이름('red', 'blue'), HEX 코드('#FF5733'), RGB 값 등 다양한 방식을 지원합니다.

마치 색연필로 그림을 그릴 때 원하는 색을 고르듯, 그래프에도 브랜드 색상이나 강조 색상을 적용할 수 있습니다.

다음 코드를 살펴봅시다.

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))

# 데이터 준비
products = ['제품A', '제품B', '제품C', '제품D']
sales = [120, 95, 140, 80]

# 색상 리스트 정의 (각 막대마다 다른 색상)
colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A']

# 색상을 적용한 막대 그래프
plt.bar(products, sales, color=colors)

plt.title('제품별 판매 실적')
plt.xlabel('제품명')
plt.ylabel('판매량')

plt.show()

김개발 씨는 이제 데이터 시각화에 자신감이 붙었습니다. 크기도 조절할 수 있고, 제목과 레이블도 붙일 수 있습니다.

하지만 한 가지 아쉬운 점이 있었습니다. 모든 그래프의 막대가 똑같은 파란색이었습니다.

디자이너 이예쁨 씨가 김개발 씨의 모니터를 지나가다 보고 말했습니다. "김개발 씨, 그래프 잘 만들었네요.

그런데 색깔이 좀 단조로워요. 우리 회사 브랜드 컬러인 코랄색도 넣어보면 어때요?" 왜 색상이 중요할까요? 쉽게 비유하자면, 색상은 마치 음식의 플레이팅과 같습니다.

같은 음식이라도 예쁜 접시에 색감 좋게 담으면 더 맛있어 보입니다. 그래프도 마찬가지입니다.

데이터는 같아도 색상을 잘 선택하면 훨씬 전문적이고 보기 좋습니다. 단색 그래프의 한계 matplotlib의 기본 색상은 파란색입니다.

하나의 막대 그래프라면 괜찮지만, 여러 항목을 비교할 때는 단조롭습니다. 특히 중요한 항목을 강조하고 싶을 때 모두 같은 색이면 불편합니다.

회사 브랜드 이미지나 보고서 테마에 맞추기도 어렵습니다. color 파라미터의 등장 박시니어 씨가 김개발 씨에게 알려줍니다.

plt.bar()에 color 파라미터를 추가하면 색상을 바꿀 수 있습니다. 하나의 색상을 지정하면 모든 막대가 그 색이 됩니다.

색상 리스트를 주면 각 막대마다 다른 색을 적용할 수 있습니다. 정말 다양한 방법이 있습니다.

색상 지정 방법 색상을 지정하는 방법은 여러 가지입니다. 첫째, 색상 이름을 사용할 수 있습니다.

'red', 'blue', 'green' 같은 기본 색상 이름을 그대로 쓰면 됩니다. 둘째, HEX 코드를 사용할 수 있습니다.

'#FF6B6B' 같은 형식입니다. 디자이너가 주는 색상 코드를 그대로 쓸 수 있어 편리합니다.

셋째, RGB 튜플도 사용 가능합니다. 코드 분석하기 위의 코드를 살펴봅시다.

colors 리스트에 4개의 HEX 색상 코드를 담았습니다. 첫 번째는 코랄 레드, 두 번째는 청록색, 세 번째는 하늘색, 네 번째는 연한 주황색입니다.

이 리스트를 plt.bar()의 color 파라미터에 전달합니다. 그러면 첫 번째 막대는 코랄 레드, 두 번째 막대는 청록색 하는 식으로 각각 다른 색이 적용됩니다.

제품별로 구분하기 쉽고, 시각적으로도 훨씬 풍부해집니다. 실무에서의 활용 실제 회사에서는 어떻게 쓰일까요?

브랜드 가이드라인에 지정된 색상을 그래프에 그대로 적용합니다. 삼성은 파란색, LG는 빨간색처럼 회사마다 브랜드 컬러가 있습니다.

데이터 시각화에도 이런 브랜드 아이덴티티를 반영하면 통일감이 생깁니다. 또한 좋은 실적은 초록색, 나쁜 실적은 빨간색으로 표시하면 직관적입니다.

색상 선택 팁 색상을 고를 때 주의할 점이 있습니다. 너무 많은 색을 사용하면 오히려 산만해집니다.

3-5개 정도가 적당합니다. 또한 색맹인 사람도 구분할 수 있는 색을 선택해야 합니다.

빨강과 초록을 같이 쓰면 색맹인 사람은 구분이 어렵습니다. 색상 대비도 고려해야 합니다.

너무 비슷한 색끼리 나란히 놓으면 구분이 안 됩니다. 정리 김개발 씨는 회사 브랜드 컬러를 적용한 그래프를 만들었습니다.

이예쁨 씨가 다시 보더니 엄지를 치켜세웠습니다. "훨씬 보기 좋아요!

이제 진짜 전문가처럼 보이네요." 색상 하나만 잘 선택해도 그래프의 품질이 확 달라집니다. 여러분도 브랜드 컬러나 강조 색상을 활용해 보세요.

실전 팁

💡 - 색상 이름('red'), HEX('#FF0000'), RGB 모두 사용 가능합니다

  • 색상 리스트를 전달하면 각 막대마다 다른 색을 적용할 수 있습니다
  • 색맹 사용자를 고려한 색상 조합을 선택하세요

6. plt show와 저장하기

김개발 씨는 이제 멋진 그래프를 만들 수 있게 되었습니다. 팀장님이 말씀하셨습니다.

"이 그래프를 이미지 파일로 저장해서 보고서에 넣고 싶은데, 어떻게 하죠?" 김개발 씨는 스크린샷을 찍어야 하나 고민했습니다.

**plt.savefig()**는 그래프를 이미지 파일로 저장하는 함수입니다. PNG, JPG, PDF 등 다양한 형식을 지원합니다.

plt.show()는 화면에 표시만 하지만, plt.savefig()는 파일로 저장합니다. 마치 그림을 그린 후 액자에 걸어 전시할지, 사진을 찍어 앨범에 보관할지 선택하는 것과 같습니다.

다음 코드를 살펴봅시다.

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))

# 데이터 준비
categories = ['1분기', '2분기', '3분기', '4분기']
revenue = [2500, 2800, 3200, 3500]

# 그래프 생성
plt.bar(categories, revenue, color='#4ECDC4')
plt.title('2024년 분기별 매출')
plt.xlabel('분기')
plt.ylabel('매출액 (만원)')

# 파일로 저장 (show 전에 호출)
plt.savefig('quarterly_sales.png', dpi=300, bbox_inches='tight')

# 화면에 표시
plt.show()

김개발 씨는 이제 데이터 시각화 전문가가 된 것 같은 기분이었습니다. 색깔도 예쁘고, 크기도 적당하고, 설명도 명확한 그래프를 만들 수 있게 되었습니다.

하지만 새로운 문제가 생겼습니다. 팀장님이 말씀하셨습니다.

"김개발 씨, 이 그래프를 파워포인트 보고서에 넣어야 하는데, 이미지 파일로 줄 수 있나요?" 김개발 씨는 스크린샷을 찍으려다가 멈췄습니다. 더 좋은 방법이 있을 것 같았습니다.

왜 파일 저장이 필요할까요? 쉽게 비유하자면, plt.show()는 전시회에서 그림을 보는 것이고, plt.savefig()는 그림을 사진으로 찍어 가져가는 것입니다. 보기만 하는 것과 소유하는 것의 차이입니다.

그래프를 문서에 넣거나, 이메일로 보내거나, 웹사이트에 올리려면 파일이 필요합니다. plt.show()만의 한계 plt.show()는 화면에 표시만 합니다.

창을 닫으면 그래프는 사라집니다. 다시 보려면 코드를 재실행해야 합니다.

다른 사람에게 공유할 수도 없습니다. 스크린샷을 찍을 수는 있지만, 화질이 떨어지고 크기 조절도 어렵습니다.

전문적인 보고서에는 적합하지 않습니다. plt.savefig()의 등장 박시니어 씨가 김개발 씨에게 알려줍니다.

plt.savefig()를 사용하면 그래프를 고품질 이미지 파일로 저장할 수 있습니다. 첫 번째 인자로 파일 이름을 주면 됩니다.

확장자에 따라 자동으로 형식이 결정됩니다. PNG, JPG, PDF, SVG 등 다양한 형식을 지원합니다.

코드 상세 분석 위의 코드를 단계별로 살펴봅시다. 그래프를 다 그린 후, plt.show() 전에 plt.savefig()를 호출합니다.

순서가 중요합니다. show()를 먼저 호출하면 저장이 제대로 안 될 수 있습니다.

plt.savefig('quarterly_sales.png', dpi=300, bbox_inches='tight')를 분석해봅시다. 첫 번째 인자는 파일 이름입니다.

확장자를 png로 했으므로 PNG 형식으로 저장됩니다. dpi=300은 해상도입니다.

기본값은 100인데, 300으로 높이면 인쇄 품질이 됩니다. bbox_inches='tight'는 여백을 자동으로 조절해줍니다.

파일 형식 선택하기 어떤 형식을 선택해야 할까요? PNG는 가장 무난합니다.

투명 배경도 지원하고, 품질도 좋습니다. 보고서나 웹사이트에 적합합니다.

JPG는 파일 크기가 작지만 투명 배경을 지원하지 않습니다. PDF는 벡터 형식이라 확대해도 깨지지 않습니다.

논문이나 인쇄물에 좋습니다. SVG도 벡터 형식으로 웹에서 많이 씁니다.

해상도와 품질 dpi 값이 품질을 결정합니다. dpi는 dots per inch의 약자입니다.

100은 화면용, 300은 인쇄용으로 적당합니다. 너무 높이면 파일 크기가 커집니다.

600이나 1200은 특별한 경우가 아니면 필요 없습니다. 용도에 맞게 선택하면 됩니다.

실무 활용 실제 회사에서는 어떻게 쓰일까요? 매일 자동으로 그래프를 생성해서 저장하는 시스템을 만들 수 있습니다.

예를 들어 매일 아침 전날 매출 그래프를 이메일로 보내는 자동화 스크립트를 만듭니다. plt.savefig()로 파일을 저장하고, 그 파일을 이메일에 첨부하면 됩니다.

보고서 자동화에도 필수입니다. 주의사항 초보자들이 자주 하는 실수가 있습니다.

plt.show() 후에 plt.savefig()를 호출하면 빈 이미지가 저장될 수 있습니다. 순서를 꼭 지켜야 합니다.

또한 파일 경로를 잘못 지정하면 찾을 수 없습니다. 현재 디렉토리에 저장되므로 필요하면 절대 경로를 사용하세요.

정리 김개발 씨는 코드에 plt.savefig()를 추가했습니다. 실행하니 작업 폴더에 quarterly_sales.png 파일이 생성되었습니다.

팀장님께 파일을 전달드렸습니다. "완벽하네요!

이걸 보고서에 바로 넣을게요." 그래프 저장은 실무에서 매우 자주 쓰입니다. 꼭 기억해 두세요.

실전 팁

💡 - plt.savefig()는 plt.show() 전에 호출해야 합니다

  • dpi=300으로 설정하면 인쇄 품질로 저장됩니다
  • bbox_inches='tight' 옵션으로 불필요한 여백을 제거할 수 있습니다

7. pandas plot 메서드 활용

김개발 씨는 matplotlib에 익숙해졌습니다. 그런데 데이터가 pandas DataFrame에 저장되어 있을 때마다 리스트로 변환하는 게 번거로웠습니다.

박시니어 씨가 웃으며 말합니다. "pandas에는 plot() 메서드가 내장되어 있어요.

훨씬 간편합니다."

pandas의 plot() 메서드는 DataFrame에서 바로 그래프를 그릴 수 있는 기능입니다. matplotlib을 기반으로 하지만 더 간편한 문법을 제공합니다.

마치 복잡한 요리를 직접 하지 않고 간편식을 데우는 것처럼, 데이터를 별도로 추출하지 않고 바로 시각화할 수 있습니다.

다음 코드를 살펴봅시다.

import pandas as pd
import matplotlib.pyplot as plt

# pandas DataFrame 생성
data = {
    '제품': ['노트북', '태블릿', '스마트폰', '이어폰'],
    '판매량': [45, 62, 88, 120]
}
df = pd.DataFrame(data)

# pandas plot() 메서드로 막대 그래프 생성
df.plot(x='제품', y='판매량', kind='bar',
        color='#45B7D1', legend=False, figsize=(10, 6))

plt.title('제품별 판매량')
plt.ylabel('판매량 (개)')
plt.xlabel('제품명')

plt.show()

김개발 씨는 이제 matplotlib을 자유롭게 다룰 수 있게 되었습니다. 막대 그래프, 색상, 저장까지 모두 완벽합니다.

하지만 실무에서 데이터는 대부분 pandas DataFrame에 저장되어 있습니다. 매번 이런 작업을 반복했습니다.

DataFrame에서 컬럼을 추출해서 리스트로 만들고, 그걸 plt.bar()에 넣습니다. 컬럼이 많으면 여러 줄을 작성해야 합니다.

조금 번거롭다는 생각이 들었습니다. 박시니어 씨가 김개발 씨의 코드를 보고 말했습니다.

"matplotlib을 직접 쓰는 것도 좋지만, pandas의 plot() 메서드를 쓰면 훨씬 간단해요." pandas plot()이란 무엇일까요? 쉽게 비유하자면, pandas plot()은 마치 즉석 카메라 같습니다. 일반 카메라는 사진을 찍고, 현상하고, 인화해야 합니다.

즉석 카메라는 찍으면 바로 나옵니다. pandas plot()도 마찬가지입니다.

DataFrame에서 바로 그래프가 나옵니다. matplotlib만 쓸 때의 불편함 matplotlib만 사용하면 단계가 많습니다.

먼저 DataFrame에서 컬럼을 하나씩 추출합니다. x축용 데이터, y축용 데이터를 각각 변수에 담습니다.

그다음 plt.bar()에 전달합니다. 컬럼이 5개, 10개면 코드가 길어집니다.

실수할 여지도 많아집니다. pandas plot()의 장점 pandas plot()을 사용하면 이 모든 과정이 한 줄로 끝납니다.

DataFrame에 plot() 메서드를 바로 호출하면 됩니다. x와 y에 컬럼 이름만 지정하면 자동으로 그래프가 그려집니다.

kind 파라미터로 그래프 종류를 선택합니다. 'bar'는 막대 그래프, 'line'은 선 그래프입니다.

matplotlib보다 코드가 훨씬 짧고 읽기 쉽습니다. 코드 분석 위의 코드를 자세히 살펴봅시다.

먼저 pandas DataFrame을 만듭니다. 딕셔너리로 데이터를 정의하고 pd.DataFrame()으로 변환합니다.

이제 df에는 제품 이름과 판매량이 테이블 형태로 저장되어 있습니다. df.plot(x='제품', y='판매량', kind='bar', ...)가 핵심입니다.

x='제품'은 x축에 제품 컬럼을 쓰겠다는 뜻입니다. y='판매량'은 y축에 판매량 컬럼을 쓰겠다는 뜻입니다.

kind='bar'는 막대 그래프를 그리겠다는 의미입니다. color, legend, figsize 같은 옵션도 그대로 사용할 수 있습니다.

matplotlib 기반이기 때문입니다. 뒤에서 plt.title(), plt.ylabel() 같은 matplotlib 함수도 함께 쓸 수 있습니다.

다양한 그래프 종류 kind 파라미터로 여러 그래프를 그릴 수 있습니다. kind='line'은 선 그래프, kind='barh'는 가로 막대 그래프입니다.

kind='pie'는 원 그래프, kind='scatter'는 산점도입니다. kind='hist'는 히스토그램, kind='box'는 박스 플롯입니다.

하나의 메서드로 모든 종류의 그래프를 그릴 수 있습니다. 실무 활용 사례 실제 회사에서는 어떻게 쓰일까요?

데이터 분석가들은 대부분 pandas로 데이터를 다룹니다. CSV 파일을 읽어오면 바로 DataFrame이 됩니다.

이때 plot() 메서드를 쓰면 빠르게 탐색적 분석을 할 수 있습니다. 한 줄로 그래프를 그려서 데이터 분포를 확인하고, 이상치를 찾고, 트렌드를 파악합니다.

matplotlib과 함께 사용하기 pandas plot()과 matplotlib을 함께 쓸 수 있습니다. pandas plot()으로 기본 그래프를 그리고, matplotlib 함수로 세부 조정을 합니다.

제목, 레이블, 그리드 등을 추가할 때는 여전히 plt.title(), plt.xlabel() 같은 함수를 사용합니다. 두 가지 방법의 장점을 모두 활용할 수 있습니다.

정리 김개발 씨는 pandas plot()을 배우고 감탄했습니다. "이렇게 간단한 방법이 있었다니!" DataFrame에서 바로 그래프를 그리니 코드가 훨씬 깔끔해졌습니다.

박시니어 씨가 웃으며 말했습니다. "pandas와 matplotlib을 적재적소에 활용하는 게 중요해요." 여러분도 pandas DataFrame을 다룰 때는 plot() 메서드를 적극 활용해 보세요.

실전 팁

💡 - pandas plot()은 matplotlib 기반이므로 plt 함수들과 함께 사용할 수 있습니다

  • kind 파라미터로 다양한 그래프 종류를 선택할 수 있습니다 (bar, line, pie, scatter 등)
  • 빠른 데이터 탐색에는 pandas plot()이, 세밀한 커스터마이징에는 matplotlib이 유리합니다

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#Python#matplotlib#pandas#시각화#데이터분석

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.