ChatGPT로 파이썬 데이터 시각화 시켜보기

2023. 3. 14. 11:36IT, 데이터/Python(파이썬)

728x90

 

ChatGPT가 뜬 지 몇 달이 지나서, 인터넷에 이것저것 질문하고 업무에도 쓸 수 있는 여러가지 방법들도 올라오고 있습니다.

 

그 중에 유용한 분야로 문장으로 지시하면 코드를 써주는 기능이 있죠.

 

챗GPT가 어디까지 복잡한 코드를 이해하고 코딩을 해줄 수 있는지는 모르겠는데,

챗GPT로 코딩을 하려면 인공지능 성능은 둘째치고

먼저 내가 코딩하고자 하는 내용을 문장으로 조리있게 쓰는 것 부터가 일단 시작이죠.

 

예를 들어 여러 조건문, 클래스, 이벤트 들이 난무하는 작동을 챗GPT로 만들게 하려면 일단 내가 생각하는 작동방식을 문장으로 쭉 풀어서 써줘야 하는데, 일단 그것부터가 어렵겠죠. 

 

하지만 몇몇 분야에 대해서는 챗GPT가 크게 도움이 될만한 부분이 있을 것 같았는데,

바로 데이터 시각화 부분이였습니다.

 

왜냐하면 데이터 시각화 자체는 이렇게 만들겠다라고 말로 설명하기는 쉬운데

막상 코드를 작성하려면 손이 너무 많이 가기 때문이였죠.

 

엑셀이나 시각화 전용 프로그램 이용하면 대충 드래그하고 버튼 누르면 알아서 차트가 짠 하고 나오는데,

파이썬이나 R 같은 언어로 시각화 하려면 x,y축 범위 부터 해서 범례, 선 색깔, 폰트 크기, 차트 배치 등 모든 요소를 다 코딩을 해서 만들어야 하니, 주기적으로 자동화해야 하는 상황 아니면 데이터까지 다 준비해놓아도 그냥 csv로 내보내서 엑셀같은 프로그램으로 시각화하고 말지 굳이 파이썬으로 시각화해야하나 싶을 때가 많았으니까요.

 

그래서 이번에 챗GPT로 파이썬 데이터 시각화를 한 번 시켜보았는데,

시각화 용도로 코딩 보조하는 능력은 꽤 괜찮다는 생각이 듭니다.

 

프로그램 구조가 복잡하지 않고 단지 함수들이 여러가지라 일일이 외우거나 검색해서 해야하는 수고스러움을 많이 덜어주더라구요.

여러 번 추가 질문을 할수록, 예전에 했었던 질문이나 대답을 자꾸 까먹는 문제가 있고,

원하는 바를 명확히 언급해주지 않으면 자기가 알아서 없는 상황을 가정하고 마음대로 코드를 짜는 경향이 있습니다.

 

따라서 사람이 직접 코드에 손을 봐줘야 할 필요성은 거의 99% 확률로 있기 때문에, python이나 R에 대한 이미 지식이 있는 사람이 시각화 코딩을 편하게 해주는 도구로는 유용하지만, 해당 언어에 대한 지식 또는 코딩에 대한 개념이 하나도 없는 사람이 쓰기는 어렵다는 것이 일단 잠정적으로 내린 결론이였고요.

 

그래서 이번에 챗GPT로 데이터 시각화 해보면서 어떤 부분이 좋고 어떤 부분이 부족해서 사람의 터치가 필요할 지 이해해보고자 합니다.

 

이하의 내용부터는 챗GPT와 채팅하면서 하는 내용이라 편한 말투로 쓰도록 하겠습니다. 

 

 

 


0.

초기 소스코드 입력

 

질문을 하기 앞서 먼저 ChatGPT가 내가 쓸 코드의 언어와 변수명 등을 인식하도록

코드의 가장 첫 부분인 데이터 로딩 및 변수선언 부분을 입력해주었다. 

python의 pandas 패키지를 활용해 숫자가 입력된 csv 파일 형태 테이블을 6개를 불러와 각각 변수에 집어넣는 코드이다.

 

 

참고로 python으로 불러온 표는 우리나라 근로소득 연봉 및 부양가족 숫자에 따라서 내는 소득세를 계산한 수치들이며,

각 파일들은 수치만 다르고 표의 컬럼은 모두 동일한 구조로 이루어져 있다. (아래 그림 참고, csv 파일을 엑셀로 다시 디자인 했음)

 

참고로 가장 왼쪽 컬럼은 연봉은 만원 단위로 되어있으며, 나머지 소득세와 관련된 수치가 입력된 부분은 만원 단위가 아니라 그냥 원 단위이다. 

 

시각화하고자 하는 데이터에 대한 설명은 이 정도로 하고,

어쨌든 위와 같이 코드를 챗GPT에 집어넣으면 챗GPT는 이것이 자연어 문장이 아니라 프로그램 코드라는 것을 인지하고 '당신이 제공한 코드 스니펫으로 어떤걸 도와드릴까요?'라는 의미로 영어로 답변한다.

 

이제부터 내가 원하는 대로 코드를 작성하도록 문장으로 얘기해주면 된다.

 

 


1.

df_1_simple_tax에서 '1인' 컬럼을 차트로 표시해줘

 

 

먼저 df_1_simple_tax 데이터프레임에 있는 '1인' 컬럼을 차트로 표시해달라고 단순히 질문하였다.

 

그랬더니 알아서 따박따박 코드를 작성한다. 내가 이게 python 코드라거나 변수가 pandas 데이터프레임이라는 것을 얘기하지 않았는데, 코드를 보고 그냥 알아서 이해한다. 당연한 기능이겠지만 그래도 똑똑하다 싶다.

 

그리고 얘가 코드를 보여줄 때 사람이 실제로 쓰는 것 같은 비스므리한 느낌 나게 한번에 모았다가 코드를 한 번에 보여주는게 아니라, 영화에서 해킹하는 장면같은 거 나올 때 시스템 메시지 같은거 막 비장하게 보여주는 것 처럼

순차적으로 막 지가 엄청 열심히 타이핑하는 것 같이 작성하는 모습이 나온다.

 

시각화 방식은 파이썬에서 가장 보편적으로 사용되는 matplotlib 패키지로 작성을 해주었고,

작성된 코드는 편리하게 'Copy Code' 버튼을 누르면 알아서 복사가 되서 원래 내가 개발하는 환경으로 붙여넣으면 된다.

 

 

작성된 코드가 제대로 되었는지 따로 확인하지 않고, 바로 주피터 노트북으로 옮겨서 실행해보았다.

 

AI가 작성했으니까 오타나거나 에러는 안나겠지 했는데??

 

 

이런. 바로 에러가 난다.

 

뭐가 잘못되었나 보았는데, 코드에 4번째 줄에 '연도' 컬럼이 들어가있다. 사실 위에 표 캡처한 것에서 보듯이 내가 불러온 데이터에는 '연봉'과 '1인'~'11인' 이라는 컬럼만 있지, '연도'라는 컬럼은 여기 없다. 그런데 챗GPT는 자기가 마음대로 '연도'라는 컬럼을 사용한 것이다. 그 이유를 코드 위에 쓰여진 답변을 보니까 이해가 됐다.

 

챗GPT는 코드를 작성할 때 코드만 보여주는 게 아니라 내가 해달라고 한 질문에 대해서 자기 나름대로 이해해서 '이렇게 작성하겠습니다.' 라고 말하고, 그 다음 코드를 작성한 다음, 어떻게 그 코드를 작성했는 지에 대해서 나름 논리적으로 설명해준다.

 

설명을 보니 df_1_simple_tax 데이터프레임이 있다는 건 알지만 그 데이터를 직접 챗GPT가 까서 열어볼 수는 없으니 무슨 컬럼이 있는지 모른다. 그래서 내가 명시적으로 언급한 '1인' 말고 '연도'라는 컬럼이 있다고 가정하는 것이였다.

 

연도는 기준연도를 의미하고, '1인'은 해당 세액을 포함한다고 설명하였다. 내가 이 데이터가 그런 내용을 담고 있다고 얘기한 적도 없고, 얘가 데이터를 직접 열어본 것도 아닌데 변수명이나 파일 제목을 보고 대충 때려맞힌 듯 싶다. 어느 정도는 맞긴 하지만 반만 맞는 추론이다. 앞으로도 종종 나오지만 챗GPT는 주어지지 않은 정보를 과도하게 넘겨짚어서 말을 지어내는 경우가 있다.

 

그리고 자기가 얼추 판단한 내용에 따라 x, y축 레이블과 차트 이름까지 알아서 작성하였다. 챗GPT가 추론한 대로라면 제목은 괜찮게 지어진 것이다. 하지만 내가 불러온 데이터는 챗GPT가 생각한 데이터와 다르기 때문에 결과적으로는 틀렸다.

 

 

따라서 첫 질문으로 부터 유추할 수 있는 챗GPT의 특성은,

정보가 불완전하게 주어지면 정확한 답변을 하는 데 있어 필요한 부분은 자기가 가진 정보들로 추리해서 만들어 낸다는 것이다.

 

약간 신입사원 중에 좀 에이스 기질 있는 친구들은 모르는 거 있어도 굳이 묻지 않고 자기가 알아서 그럴듯 한 거 생각해서 하는 경향이 있는데, 챗GPT도 그런 에이스 기질이 있는 것 같다.

 

하지만 그 추리가 틀리는 경우도 많기 때문에 좀 더 명확하게 질문을 해야될 필요가 있겠다.

 

  


2.

df_1_simple_tax에서 '연봉' 컬럼을 x축으로, '1인' 컬럼을 y축으로 차트로 표시해줘

 

 

아까 질문이 에러가 나왔던 것은 결국 내가 y축으로 쓸 데이터만 주고 x축으로 쓸 데이터를 알려주지 않았기 때문이다.

그래서 이번에는 어떤 컬럼과 어떤 컬럼을 x축과 y축으로 해서 만들어달라 라고 이야기하였다.

 

 

그랬더니 이번에는 에러없이 약간 내가 원하는 모습대로 차트를 그려줬다.

 

챗GPT가 겨우 이 정도 밖에 못할 놈은 아니라고 생각하지만 그래도 여기까지만 해도 일단 대단하다고 생각했다. 

 

하지만 내가 또 구체적으로 요청하지 않았던 게 바로 차트 유형이였다. 아까는 막대 차트로 코드를 짰는데, 이번에는 닷 차트(scatter plot)로 차트 그리는 코드를 짠 것이다. 닷 차트가 틀린 것은 아니지만 꺾은 선 차트가 좀 더 보기 좋을 것 같아서, 다시 요청하였다.

 

 


3.

df_1_simple_tax에서 '연봉'컬럼을 x축으로, '1인' 컬럼을 y축으로 꺾은선 차트로 표시해줘

 

 

이번에는 아까 질문과 다 같고, '꺾은 선 차트로 표시해줘' 라는 문구만 수정하였다.

 

 

이제 내가 생각했던 모습으로 차트로 표시해 주었다.

 

그런데 축 레이블과 제목에 한글이 깨지는 현상이 발생했다. 별거 아닌데 할 때 마다 까먹어서 매번 인터넷 검색해봐야 해서 귀찮다.

그래서 한글 안 깨지게 해달라고 다시 요청했다.

 

 


4. 

위의 차트에서 한글이 깨지는데 안깨지게 해줘

 

한글 안깨지게 하려면 한글 폰트가 설치되어 있어야 하는데, '맑은 고딕' 폰트가 설치되어 있다고 가정하고, fontdict 파라미터에 font 정보를 들어가게 하면 된다고 알려준다.

 

그리고 차트 만드는 방식이 약간 바뀌었는데, 아까전에는 바로 plt.plot() 이런 식으로 작성했는데, 이번에는 plt.subplots()으로 서브플롯을 생성하는 방식으로 바뀌었다. 그 이유는 잘 모르겠다.

 

 


5. 

위의 차트에서 '2인' 컬럼을 빨간색 선으로 추가해줘

 

 

이번에는 기존에 만든 차트 위에 '2인' 이라는 새로운 컬럼의 내용을 추가하여 표시하도록 요청하였다.

그리고 선 색깔을 빨간색으로 구체적으로 지시했는데, 구체적인 지시는 찰떡같이 알아듣고 반영했다.

 

그리고 한 차트 안에 데이터 계열이 2개 이상 들어가면서, 범례를 자동으로 추가해준다.

이 부분은 센스가 있었는데 한글이 깨지는 거는 고치지 않은 상태로 추가해서 반만 센스가 있는 듯 싶다.

 

 


6. 

아까 만들었던 차트에서 y축을 지수가 아니라 원래 숫자로 표시되게 해줘

 

그리고 y축이 단위가 크다보니 자동으로 1e7 과 같은 식으로 지수로 표현하였는데, 별로 직관적이지 않아서 일반적인 숫자 형식으로 표시해달라고 했다. 그런데 그거를 어떻게 말로 써야할 지 몰라서 '원래 숫자'라는 애매한 표현으로 요청했는데도 잘 알아듣는다.

 

하지만 y축 레이블이 원래 '세액'이였는데, 이번에는 뜬금없이 '인원'으로 고쳐버렸다.

 

 

지수형태로 표시되는 건 고쳤는데, 한글 깨진 거 고친거는 또 다시 원래대로 돌아갔다.

 

내가 계속 '아까 만들었던 차트', '위의 차트' 이런 식으로 방금 전 했던 상태에서 뭘 더 해달라라고 요청을 하는데,

챗GPT는 전에 어떤 상태였는지 100% 다 기억하고 있지 않은 모양이다.

 

 


7. 

jupyter notebook에서 warning 표시 안나오게 해줘

 

아까부터 별 필요없이 자꾸 warning 메시지 나오는게 마음에 들지 않아서 질문했는데, 답변방식이 꽤 구체적이다.

 

 

단순히 모든 warning을 무시하는 것 뿐만 아니라, 파라미터 설정에 따라 좀 더 세부적으로 조절할 수 있다는 사실을 알려준다.

 

 

 


8. 

위의 코드에서 x축, y축을 점선으로 격자로 표시해줘

 

차트가 선으로 되어있다보니, x축이 어떤 숫자일 때 y축 값이 어떻게 되는지 알아보기가 어렵다.

그래서 차트 내부에 값이 대략적으로 어떻게 되는지 알아보기 편하도록 해달라고 했는데,

정확한 용어를 모르겠어서 저런 식으로 격자로 표시해달라고 말했는데 잘 알아들을 지 모르겠다.

 

 

솔직히 이거는 잘 못 알아들을 것 같다고 생각했는데, 또 찰떡같이 점선으로 안내선을 그어준다.

matplotlib에서도 grid라는 함수를 사용하고 있어서, '격자' 라는 용어 표현을 잘 알아들은 듯 하다.

 

 


9. 

위 코드에서 '2인' 컬럼을 뺴고, df_4_res_tax의 '1인' 컬럼을 파란색 점선으로 표시해줘

 

이번에는 두 가지 일을 동시에 요청해보았다.

원래 있던 선을 제거하고, 다른 데이터프레임에 있는 값을 파란색 점선으로 디자인을 구체적으로 요구했는데,

역시 잘 이해하고 코드를 짰다.

 

하지만 이번에도 y축 레이블이 문제였는데 아까전에는 '인원'이라고 하더니

이번에는 y축 단위를 세액(만원)이라고 고치는 실수를 했다.

 

세액은 단위가 만원이 아니라 그냥 원인데, 왜 그런가 했더니 x축 레이블이 연봉(만원)이여서, y축 레이블도 단위가 만원인 것으로 과도하게 넘겨짚은 것이 아닐까 싶다. 생각해보니까 컬럼명은 그냥 '연봉'이라 아까 전까지는 x축 레이블도 그냥 '연봉'이였는데, 지금은 '연봉(만원)'으로 바뀌어 있다. 내가 준 정보만으로는 연봉이 만원 단위라는 걸 알리가 없는데, 아마 보통 만원 단위로 많이 쓰니까 그렇게 적은 것 같다. 결과적으로는 맞긴 하지만 문자열 부분을 자기가 임의로 결정하는 부분들이 좀 있어서 주의할 필요가 있다. 

 

챗GPT가 데이터를 다루는 코드를 짤 때, 자기가 모르는 정보는 추론을 해서 짜기 때문에, 얼핏보면 데이터를 다 보고 코드를 짜는 것 같지만 사실은 내가 전달해준 정보(파일명, 변수명, 일부 컬럼명, 내가 지시하는 내용)만을 알고 있기 때문에, 실제로는 데이터 안에 컬럼이 어떻게 구성되어 있고 값이 어떤 값들이 들어있는 지는 전혀 모른다.

 

챗GPT는 코드 및 데이터 중에 오로지 내가 전달해준 내용만 알고 있는거지, 나처럼 모든 걸 알고 있는 상태가 아니라는 것을 항상 염두에 두어야 할 것 같다. 

 


10. 

위 코드에서 df_6_diff_tax의 '1인' 컬럼을 이중축으로 회색 점선으로 표시해줘

 

이번에는 차트를 좀 더 복잡하게 만드는 일을 요청했다.

df_6_diff_tax는 두 가지 세액의 차이가 계산된 값이기 때문에, 원래 차트로 나타났던 값보다 값이 작다.

그래서 차트 오른쪽에 별도의 축을 만들어서 좀 더 자연스럽게 나타나도록 요청했다.

 

여기서부터는 챗GPT가 답변을 영어가 아니라 한국어로 해준다. 갑자기 왜 바뀌었는지는 모르겠다.

 

 

요구한대로 이중축을 만들고 df_6_diff_tax의 '1인' 컬럼을 회색선으로 잘 표시하도록 해주었다.

그러나 원래 파란색 선으로 표시된 것 중에 실선 파란색 데이터는 어디로 날아가버리고,

파란색 점선 또한 원래 축이 아니라 새로 생긴 이중축을 기준으로 표시해버려서 선이 하늘위로 날아가버렸다.

 

나는 항상 기존에 있던 상태에서 뭘 고쳐달라고 얘기한건데,

내가 문장으로 직접적으로 요구한 내용은 잘 해내는데, 그 전의 상태를 명시적으로 언급하지 않으면 그냥 그새 까먹어 버리는 문제가 있다. 

 


11. 

아니, 그렇게 하지 말고 원래 차트 내용은 그대로 두고

df_6_diff_tax의 '1인' 컬럼만 이중축으로 회색 점선으로 표시해줘

 

이번에는 결과가 마음에 들지 않아서, 원래 차트 내용은 그대로 둔 상태에서 회색 점선을 추가해달라고 다시 요청했다.

방금 했던 것을 취소하고, 더 이전의 상태를 잘 기억했다가 작업할 수 있는지 모르겠다. 

 

이번에도 뭔가 고쳐주긴 했는데, 불완전하게 고쳐졌다.

 

df_1_simple_tax의 '1인' 컬럼과 회색 점선이 서로 다른 축으로 나타나도록 잘 고쳐주었는데,

1인 컬럼 색깔이 파란색이 아니라 자기 멋대로 빨간색으로 바꾸어버렸고,

파란색 점선으로 된 자료는 또 사라져버렸다.

 

챗GPT가 잘 하는 부분과 한계인 부분이 이제 보이는 것 같다.

 

 


12. 

위의 차트에 추가해서, df_4_res_tax의 '연봉' 컬럼을 x축으로,

'1인'부터 '5인'까지 컬럼을 y축으로 만들어서 1x2 형태로 배치해줘

 

이번에는 원래 있던 차트에 다른 차트를 추가로 만들어서 가로(1x2)로 배치해달라는 지시를 하였다.

일단 '1인'부터 '5인'까지의 의미를 '1인', '2인', '3인', '4인', '5인' 컬럼을 말하는 것으로 잘 이해하는지,

그리고 1x2가 가로로 배치하는 걸 잘 이해하는 지 테스트해보고 싶었다.

 

 

1인부터 5인까지라는 말을 for 문으로 반복문으로 짜주는데, 놀라운 점은 '1인'에서 '5인'까지 문자열에서 변경되는 부분을 변수로 빼서 반복문으로 자동으로 만들어준다. 어려운 일은 아니지만 손으로 짜려면 상당히 귀찮은데 이런 일 시키면 참 편할 것 같다.

 

1x2라는 말고 세로 1, 가로 2칸 짜리 격자로 잘 이해했다. 

 

하지만 이번에도 문제는 회색 점선 데이터는 왼쪽의 차트에 있어야 하는데 오른쪽 차트로 넣어버렸다는 것이다.

이제 저런 부분은 그냥 그러려니 싶다. 내가 직접 고치는 것이 어려운 것도 아니기도 하고.

 


13. 

그럼 아까 두 번째 만든 차트에서 나타난 선 색깔을

옅은 파랑색에서 진한 파랑색으로 점점 변하게 바꿀 수 있을까?

 

 

마지막으로 두 번째 만든 차트의 선 색깔이 일관성이 없어서 1인에서 5인으로 갈수록 색깔을 진하게 변경하고 싶었다.

그래서 위와 같은 문장으로 지시했는데, 사실 말이 좀 모호해보이긴 한데 잘 해줄 지 모르겠다.

 

 

이번에도 역시 시킨 일은 찰떡같이 하는 모습을 보여준다.

1인에서 5인 컬럼으로 갈수록 자연스럽게 색조가 변하도록 설정해주었다.

그리고 여기서 약간 신기했던 점은 색깔을 아까 for 문 사용한 것과 같이 어떤 변수값을 조정해서 밝기를 조절하는 줄 알았는데,

그냥 5가지 다른 색상코드를 그냥 집어넣어서 코드를 짰다.

 

챗 GPT가 사람이 자주 사용하는 색조 패턴도 기억을 하고 있는게 아닌가 싶다.

그리고 여전히 예전에 했었던 것은 기억 못하는 버릇이 있는데 이거는 앞으로는 더 이상 언급을 할 필요가 없겠다.

 

 


14. 

plt.plot()과 ax1.plot()의 차이는 뭐야?

 

 

 이제부터는 코드에 대한 몇 가지 질문을 던져보았다.

 

plt.plot()은 pyplot 객체를 사용하여 그림을 그리는 함수입니다. 이 함수는 자동으로 현재 활성화 된 figure와 axes를 찾아서 그림을 그립니다. 반면에 ax1.plot()은 하나 이상의 Axes 객체를 생성하고 명시 적으로 이를 참조하여 그림을 그립니다. 이 방법은 여러 개의 서로 다른 subplot을 포함하는 figure를 만들 때 유용합니다. 이 방법은 보통 subplots() 함수를 사용하여 figure와 axes를 미리 생성한 후에 사용됩니다.

 

15. 

plt.subplots()로 생성되는 fig와 axs 변수는 역할이 뭐야?

plt.subplots()는 matplotlib에서 figure와 axes 객체를 한번에 생성하는 함수입니다. fig 변수는 생성된 figure 객체를 저장하며, axs 변수는 생성된 axes 객체의 배열을 저장합니다. fig 객체는 그래프 전체를 나타내는 객체이며, 여러 개의 그래프를 하나의 figure 안에 그릴 수 있습니다. axs는 각각의 subplot을 나타내는 객체들의 배열입니다. 따라서, axs[i,j]는 i행 j열의 subplot을 나타내는 객체를 의미합니다. 예를 들어, axs[0,0]은 첫 번째 행, 첫 번째 열의 subplot을 나타내는 객체입니다.

 

어디 pandas 책에 있는 설명을 복붙해 놓은 것 같은 정석적이고 깔끔한 설명 능력을 보여준다.

사실 인터넷 찾아도 금방 찾을 수 있는 내용이긴 한데, 블로그 같은 데를 보면 어떤 사람은 되게 자세하고 알기 쉽게 설명해주는 반면, 어떤 블로그는 너무 무성의하게 설명되어 있는 경우도 있어서 찾는데 시간이 좀 걸릴 때도 있다.

 

챗GPT는 설명이 엄청 좋거나 엄청 나쁘거나 그 사이 중상위쯤의 양호한 수준으로 설명하는 것 같다.

 

 

16. 

방금 설명에 대해서 어떤 웹사이트를 더 찾아보면 좋을까?

설명한 내용에 대해서는 Matplotlib 공식 문서(https://matplotlib.org/stable/api/index.html)에서 더 자세하게 찾아볼 수 있습니다. 또한, 데이터 시각화에 관련된 다양한 예제와 팁을 제공하는 Seaborn(https://seaborn.pydata.org/)이나 Plotly(https://plotly.com/python/) 등의 라이브러리도 참고할 만합니다.

 

챗GPT가 워낙 거짓말 치는 능력이 좋다고 하여, 혹시 자료의 출처나 더 알아볼 곳을 물어보았는데,

정석적이게도 Matplotlib 공식 문서를 보라고 한다. 어떤 블로그나 다른 자료들도 얘기해주었으면 좋았을텐데.

 

python 데이터 시각화는 공식적인 문서가 있어서 챗GPT가 답변하는데 별로 어려움이 없는 것 같은데,

다음에 좀 더 출처를 찾기 힘든 질문에 대한 답변을 할 때도 답변이 깔끔한 지는 더 두고봐야겠다.

 

 

17. 

차트가 너무 안 예쁜 것 같은데, 좀 더 예쁘게 만들고 싶으면 어떻게 하는 게 좋을까?

 

마지막으로 예쁘다 라는 주관적인 부분을 가미해서 질문을 했는데,

데이터 시각화 분야에서도 미적인 부분에 대한 글들이 많이 있었는지, 디자인을 개선할 수 있는 아주 여러가지 방안들을 제시해준다.

나는 그냥 문장으로 설명할 줄 알았는데, 예시 소스코드까지 보여준다. 

 

차트를 예쁘게 만들기 위해서는 여러 방법이 있겠지만, 몇 가지 기본적인 방법을 소개해드릴게요.
폰트 설정하기: 차트에 사용되는 폰트를 변경하여 가독성을 높일 수 있습니다. 예를 들어, 한글 폰트를 사용하고 싶다면 matplotlib에서 제공하는 한글 폰트 패키지를 설치하고, rcParams를 통해 폰트를 설정해주면 됩니다. 아래 코드는 Malgun Gothic 폰트를 사용하는 방법입니다.
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 한글 폰트 설정
plt.rc('font', family='Malgun Gothic')
그리드 스타일 변경하기: 차트의 격자 스타일을 변경하여 더 선명하게 만들 수 있습니다. 예를 들어, 점선으로 표시되는 격자 대신 실선으로 표시할 수 있습니다.
# 격자 스타일 변경
plt.grid(linestyle='--')
레이블 수정하기: x축, y축 레이블의 크기와 위치, 간격 등을 수정하여 더 깔끔하게 만들 수 있습니다. 아래 코드는 x축, y축 레이블 크기를 조정하고, y축 레이블 위치를 왼쪽으로 이동시키는 방법입니다.
# 레이블 크기 조정
plt.xlabel('연봉', fontsize=12)
plt.ylabel('인원수', fontsize=12)

# y축 레이블 위치 이동
ax.yaxis.set_label_coords(-0.15, 0.5)
컬러맵 변경하기: 차트에 사용되는 컬러맵을 변경하여 색상을 더 예쁘게 표시할 수 있습니다. matplotlib에서 제공하는 다양한 컬러맵 중에서 적합한 것을 선택하면 됩니다. 아래 코드는 viridis 컬러맵을 사용하는 방법입니다.
# 컬러맵 변경
plt.set_cmap('viridis')
선 스타일 변경하기: 차트에 사용되는 선의 스타일을 변경하여 더 예쁘게 표시할 수 있습니다. 예를 들어, 파란색 실선 대신 검은색 점선으로 표시할 수 있습니다.
# 선 스타일 변경
ax.plot(df_1_simple_tax['연봉'], df_1_simple_tax['1인'], color='black', linestyle='--')
이 외에도, matplotlib에서 제공하는 다양한 기능을 사용하여 차트를 더 예쁘게 만들 수 있습니다.