'''
How to make a Portfolio
0. 주제를 선정하는데, 가정을 고려한다 "ㅇㅇㅇ하면 ㅇㅇㅇ이니 ㅇㅇㅇ할 것 이다"
1. 데이터를 가져온다(csv:txt)
2. 데이터를 로드한다(파이썬)
3. 데이터를 그래프화 시켜본다(각종 도구 및 조합을 이용해)
4. 3번의 동작을 확장시켜서 이야깃거리를 만든다
5. 정리하고 완성한다.
`
'''
import pandas as pd
import cv2
import numpy as np
# CSV 파일 불러오기
df = pd.read_csv("C:\\Users\\SooahCodeLab\\Downloads\\deliver change.csv", encoding='cp949')
print(df.head()) # 데이터 확인
# 이미지 설정
width, height = 600, 400
img = np.zeros((height, width, 3), dtype=np.uint8) # 검은색 배경 생성
# 데이터 정규화
data_x = np.linspace(50, width - 50, len(df)) # X축을 균등 분배
data_y = np.interp(df["값"], (df["값"].min(), df["값"].max()), (height - 50, 50)) # 값 정규화
# 그래프 그리기
for i in range(len(df) - 1):
cv2.line(img, (int(data_x[i]), int(data_y[i])), (int(data_x[i + 1]), int(data_y[i + 1])), (255, 0, 0), 2)
# 이미지 출력
cv2.imshow("Line Chart", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 이미지 설정
img = np.zeros((height, width, 3), dtype=np.uint8) # 검은색 배경 생성
bar_width = int((width - 100) / len(df)) # 바 너비 설정
# 바 차트 그리기
for i, value in enumerate(df["값"]):
x = 50 + i * bar_width
y = int(np.interp(value, (df["값"].min(), df["값"].max()), (height - 50, 50))) # 값 정규화
cv2.rectangle(img, (x, y), (x + bar_width - 5, height - 50), (0, 255, 0), -1) # 바 그리기
# 이미지 출력
cv2.imshow("Bar Chart", img)
cv2.waitKey(0)
cv2.destroyAllWindows()



