1. 영역 차트
chart = AreaChart()
from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference # 영역 차트 그리기 위한 모듈 추가
wb = Workbook()
ws = wb.active
rows = [ # 데이터 추가, 일별 상품 A 및 B 의 이익 데이터
['일수', 'A 이익', 'B 이익'],
[1, 8000, 6000],
[2, 9000, 4000],
[3, 10000, 5000],
[4, 9000, 7000],
[5, 10000, 1000],
[6, 5000, 2000],
[7, 10000, 6000],
[8, 8000, 5000],
]
for row in rows: # 위의 데이터(rows) 엑셀에 추가
ws.append(row)
chart = AreaChart() # 영역 차트 추가
chart.title = "A 물건, B 물건 이익 비교_영역차트" # 차트 제목
chart.style = 2 # 차트 스타일 지정
chart.x_axis.title = "일수" # 차트 x축 타이틀 지정
chart.y_axis.title = "이익 금액" # 차트 y축 타이틀 지정
cats = Reference(ws, min_col=1, min_row=2, max_row=9) # 1열 2행부터 1열 9행의 데이터 cats 변수로, 일수 데이터
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=9) # 2열 부터 3열, 1행 부터 9행 데이터 data 변수로, 금액 데이터
chart.add_data(data, titles_from_data=True) # data 변수를 차트 데이터로 삽입, titles_from_data -> 데이터의 타이틀 표시 -> A이익, B이익 표시됨(범례)
chart.set_categories(cats) # cats 데이터를 차트 카테고리로 삽입
ws.add_chart(chart, "E1") # 차트 E1 위치에 생성
wb.save("sample_chart.xlsx")
- 결과
3D 영역 차트
AreaChart -> AreaChart3D 로 변경
from openpyxl import Workbook
#from openpyxl.chart import AreaChart, Reference # 영역 차트 그리기 위한 모듈 추가
from openpyxl.chart import AreaChart3D, Reference # 3D 영역 차트 그리기 위한 모듈 추가
wb = Workbook()
ws = wb.active
rows = [ # 데이터 추가, 일별 상품 A 및 B 의 이익 데이터
['일수', 'A 이익', 'B 이익'],
[1, 8000, 6000],
[2, 9000, 4000],
[3, 10000, 5000],
[4, 9000, 7000],
[5, 10000, 1000],
[6, 5000, 2000],
[7, 10000, 6000],
[8, 8000, 5000],
]
for row in rows: # 위의 데이터(rows) 엑셀에 추가
ws.append(row)
# chart = AreaChart() # 영역 차트 추가
chart = AreaChart3D() # 3D 영역 차트 추가
chart.title = "A 물건, B 물건 이익 비교_영역차트" # 차트 제목
chart.style = 2 # 차트 스타일 지정
chart.x_axis.title = "일수" # 차트 x축 타이틀 지정
chart.y_axis.title = "이익 금액" # 차트 y축 타이틀 지정
cats = Reference(ws, min_col=1, min_row=2, max_row=9) # 1열 2행부터 1열 9행의 데이터 cats 변수로, 일수 데이터
data1 = Reference(ws, min_col=3, min_row=1, max_col=3, max_row=9) # 3열, 1행 부터 9행 데이터 data 변수로, 금액 데이터
data2 = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=9) # 2열, 1행 부터 9행 데이터 data 변수로, 금액 데이터
chart.add_data(data1, titles_from_data=True) # data1 변수를 차트 데이터로 삽입,B 이익
chart.add_data(data2, titles_from_data=True) # data2 변수를 차트 데이터로 삽입,A 이익
chart.set_categories(cats) # cats 데이터를 차트 카테고리로 삽입
ws.add_chart(chart, "E1") # 차트 E1 위치에 생성
wb.save("sample_chart.xlsx")
- 결과
2. 막대 차트
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference # 막대 차트 그리기 위한 모듈 추가
wb = Workbook()
ws = wb.active
rows = [ # 데이터 추가, 일별 상품 A 및 B 의 이익 데이터
['일수', 'A 이익', 'B 이익'],
[1, 8000, 6000],
[2, 9000, 4000],
[3, 10000, 5000],
[4, 9000, 7000],
[5, 10000, 1000],
[6, 5000, 2000],
[7, 10000, 6000],
[8, 8000, 5000],
]
for row in rows: # 위의 데이터(rows) 엑셀에 추가
ws.append(row)
##막대 차트1_기본형
chart1 = BarChart()
chart1.type = "col" # 세로 막대
chart1.style = 2 # 차트 색상 변경
chart1.title = "기본 막대 그래프"
chart1.y_axis.title = "일수"
chart1.x_axis.title = "이익 금액"
cats = Reference(ws, min_col=1, min_row=2, max_row=9) # 1열 2행부터 1열 9행의 데이터 cats 변수로, 일수 데이터
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=9) # 2열 부터 3열, 1행 부터 9행 데이터 data 변수로, 금액 데이터
chart1.add_data(data, titles_from_data=True) # data 변수를 차트 데이터로 삽입,B 이익
chart1.set_categories(cats) # cats 데이터를 차트 카테고리로 삽입
ws.add_chart(chart1, "A11")
wb.save("sample_chart.xlsx")
- 결과
가로 막대 차트
# 위 막대 차트 코드에 추가로 작성
from copy import deepcopy # 객체를 복사, 객체 간 영향 없음, 객체를 복사하여 별도의 새로운 객체를 생성한다고 보면됨
chart2 = deepcopy(chart1) # chart1 을 복사해 새로운 chart2 생성, 두 객체 간 서로 영향 받지 않음
chart2.style = 2
chart2.type = "bar" # 가로 막대
chart2.title = "가로 막대 차트"
ws.add_chart(chart2, "J11")
- 결과
스택형 세로 막대 차트
# 위 막대 차트 코드에 추가로 작성
chart3 = deepcopy(chart1) # chart1 을 복사해 새로운 chart3 생성, 두 객체 간 서로 영향 받지 않음
chart3.style = 2
chart3.type = "col" # 세로 막대
chart3.grouping = "stacked" # 스택형 세로 막대
chart3.title = "스택형 세로 막대 차트"
ws.add_chart(chart3, "A25")
- 결과
더보기
A 와 B 의 막대가 다른 선상에 출력됨
해당 코드 추가
chart3.overlap = 100 # 두 막대 그래프 오버랩 수치 조정
퍼센트 스택형 가로 막대 차트
chart4 = deepcopy(chart1) # chart1 을 복사해 새로운 chart4 생성, 두 객체 간 서로 영향 받지 않음
chart4.style = 2
chart4.type = "bar" # 가로 막대
chart4.grouping = "percentStacked" # 퍼센트 스택형 가로 막대
chart4.overlap = 100
chart4.title = "퍼센트 스택형 가로 막대 차트"
ws.add_chart(chart4, "J25")
- 결과
3D 막대 그래프
#위 코드에서 해당 3D 만 추가해주면 됨
#from openpyxl.chart import BarChart, Reference # 막대 차트 그리기 위한 모듈 추가
from openpyxl.chart import BarChart3D, Reference # 3D 막대 차트 그리기 위한 모듈 추가
#chart1 = BarChart()
chart1 = BarChart3D()
- 결과
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
Python_openpyxl_엑셀_07_스타일_1 (0) | 2021.02.09 |
---|---|
Python_openpyxl_엑셀_06_메모 (0) | 2021.02.07 |
Python_Jupyter Notebook_VS Code 실행 (0) | 2021.02.03 |
Python_openpyxl_엑셀_04_행과 열, 범위 이동 (0) | 2021.02.02 |
Python_openpyxl_엑셀_03_데이터 응용 (0) | 2021.02.01 |
댓글