기존 여러 행 카드 개체를 활용하여 제품 종류별 선호하는 색상을 나타낸 것이다.
제품 종류 별 선호 색상인지 색상별 가장 주문금액이 큰 제품인지의 명확한 구분이 될 수 있도록 제품 category와 색상의 위치를 바꾸는 것이 좋을 것 같다는 피드백을 받았다.
색상은 설명값 , 제품 종류는 범주 레이블으로 조절이 가능한데 이를 시각적 개체 서식으로는 위치를 바꾸는 것이 없었고,
만약 임의로 바꾸자면 값으로 제품명이 나오고 제목이 색상인 측정값을 만들어야한다는 이야기인데..
측정값 자체가 제품 종류별 가장 주문금액이 큰 색상을 반환하는 것이기 때문에 임의로 조정하는 것도 어려우리라 생각이 들어 방법이 없을까 생각하다 Python으로 위치를 조절하여 시각적개체를 표현할 수 있지 않을까 하는 생각이 들어 해보았다.
우선 Python 개체를 통해 보여줄 측정값 또는 필드를 값 영역에 추가해야 사용이 가능하다.
Python 스크립트로 작성해주면 되는데 먼저 값 영역에 있는 것들은
# dataset = pandas.DataFrame(PreferColor_B, PreferColor_C, PreferColor_Compo, PreferColor_O)
# dataset = dataset.drop_duplicates()
위 구문이 항상 실행되며 dataset에서 값을 빼내올 수 있다고 판단했다.
테스트 결과 이미지로 시각적 개체 자체를 만들어야 출력이 된다.
print로 실험해보려고 했는데 안된다..ㅎ
따라서 나는 matplotlib이 없었기 때문에 pip install matplotlib으로 모듈을 설치하고
그 과정에서 Python 스크립트 옵션에서 Python 경로가 잘 못 생성되어있어 설치되어있는 matplotlib이 없다는 오류가 발생했다.
경로를 올바르게 생성하고 아래와 같이 간단하게 text만 내놓는 plot 을 생성하는 식으로 dataset["PreferColor_O"]를 출력해보니
import matplotlib.pyplot as plt
# 시각화 설정
fig, ax = plt.subplots(figsize=(4, 4)) # 크기를 조정하여 카드 형태로 만듭니다
ax.text(0.5, 0.5, dataset["PreferColor_O"] , fontsize=20, ha='center', va='center', fontweight='light')
ax.axis('off') # 축을 숨깁니다
# 시각화 출력
plt.show()
위와 같이 0 Black name:PreferColor_O dtype : ob 가 출력되었다.
여기에서 Black 값을 가져오고 싶은 것이기 때문에
# 시각화 설정
fig, ax = plt.subplots(figsize=(4, 4)) # 크기를 조정하여 카드 형태로 만듭니다
ax.text(0.5, 0.5, value , fontsize=20, ha='center', va='center', fontweight='light')
ax.axis('off') # 축을 숨깁니다
# 제목 설정 (필요한 경우)
plt.title('Bike', fontsize=30, fontweight='light')
# 시각화 출력
plt.show()
여러 행 카드 개체와 동일하게 네 개의 측정값이 2:2 subplot으로 나타나도록 하였고 해당 plot의 위치를 조절하고 글씨의 위치를 조절하는 등의 작업을 수행하였다. 왼쪽의 네이비색 선은 도형으로 제목은 제목 서식으로 추가한 것이다.
색상을 더 뚜렷하게 파악할 수 있도록 ● 의 색상이 값과 동일하게 변경되도록 하였다.
import matplotlib.pyplot as plt
value_b = dataset["PreferColor_B"].values[0]
value_c = dataset["PreferColor_C"].values[0]
value_Compo = dataset["PreferColor_Compo"].values[0]
value_O = dataset["PreferColor_O"].values[0]
value_list = [value_b,value_c,value_Compo,value_O]
category_list = ["Bike" , "Clothing" , "Components" , "Others"]
fig , axs = plt.subplots(2,2,figsize=(9,4))
axs = axs.flatten()
for category , value , ax in zip(category_list , value_list , axs):
ax.text(0.5, 0.6, value , fontsize=28, ha='center', va='center', fontweight='light')
ax.text(1.3, 0.6, "●" , fontsize=28, ha='center', va='center', fontweight='light',color = value)
ax.axis('off')
ax.set_title(category, fontsize=30, fontweight='light')
# 서브플롯 간의 간격 조절
plt.subplots_adjust(wspace=5, hspace=0.5 )
# 시각화 출력
plt.show()
이 때 문제가 발생한 것이 선호 색상이 nan인 경우가 있는 것이다.
원본 데이터에서 연도에 따라 구매 내역이 없는 제품 종류가 있어 color로 Nan을 반환할 수 없기 때문에 문제가 발생했다.
이때 nan인지를 판단하는 방법에 대해 고민했고 isNaN 이라는 함수를 생성하여 해결했다.
math.isNaN도 is null도 적용이 되지 않았는데 NaN(Not a Number)이기 때문에 숫자로 변환할 수 없어
NaN은 자기 자신과 같지 않은 유일한 값이라는 특성을 사용하여 매개변수 string이 자기 자신과 같지 않은 경우 즉 NaN이면 true를 반환한다.
따라서 NaN이면 color에 white , 나머지는 이전과 동일하게 출력하도록 하여 아래와 같은 결과를 확인할 수 있었다.
import matplotlib.pyplot as plt
def isNaN(string) :
return string != string
value_b = dataset["PreferColor_B"].values[0]
value_c = dataset["PreferColor_C"].values[0]
value_Compo = dataset["PreferColor_Compo"].values[0]
value_O = dataset["PreferColor_O"].values[0]
value_list = [value_b,value_c,value_Compo,value_O]
category_list = ["Bike" , "Clothing" , "Components" , "Others"]
fig , axs = plt.subplots(2,2,figsize=(9,4))
axs = axs.flatten()
for category , value , ax in zip(category_list , value_list , axs):
ax.text(0.5, 0.6, value , fontsize=28, ha='center', va='center', fontweight='light')
if isNaN(value) :
ax.text(1.3, 0.6, "●" , fontsize=28, ha='center', va='center', fontweight='light' , color = "white")
else:
ax.text(1.3, 0.6, "●" , fontsize=28, ha='center', va='center', fontweight='light',color = value)
ax.axis('off')
ax.set_title(category, fontsize=30, fontweight='light')
# 서브플롯 간의 간격 조절
plt.subplots_adjust(wspace=5, hspace=0.5 )
# 시각화 출력
plt.show()
'Power BI' 카테고리의 다른 글
Power BI 실습 1 (1) | 2024.07.02 |
---|---|
Power BI 재구매까지 걸린 기간 / 카테고리 별 색상 선호 남녀 비율 구하기 (0) | 2024.05.31 |
Power BI 보고서 작성 # 8 (3) | 2024.05.17 |
Power BI 보고서 작성 # 7 (0) | 2024.05.17 |
Power BI 보고서 작성 # 6 (1) | 2024.05.14 |