다시 이음

데이터를 적절하게 시각화 해보자 -2 ( feat. python) - 순위, 계층구조 본문

AI 일별 공부 정리

데이터를 적절하게 시각화 해보자 -2 ( feat. python) - 순위, 계층구조

Taeho(Damon) 2021. 8. 6. 10:32

어제에 이어서 여러가지 시각화 방법을 알아볼게요.

 

3. 순위 ( Ranking )

1) Bar plot ( 막대 그래프 )

barplot를 나타내는 숫자 및 categoric 변수 사이의 관계. 범주형 변수의 각 항목은 막대로 표시됩니다. 막대의 크기는 숫자 값을 나타냅니다. 

# Libraries
import numpy as np
import matplotlib.pyplot as plt

# Make a random dataset:
height = [3, 12, 5, 18, 45]
bars = ('A', 'B', 'C', 'D', 'E')
y_pos = np.arange(len(bars))

# Create bars
plt.bar(y_pos, height)

# Create names on the x-axis
plt.xticks(y_pos, bars)

# Show graphic
plt.show()

 

2) spider / Radar ( 거미 그래프, 레이더 그래프 )

레이더 차트 (또는 거미 플롯 또는 극성 차트 ) 위에 복수의 양적 변수 값 중 하나 이상의 시리즈를 시각화 할 수있다. 각 변수에는 고유한 축이 있으며 모든 축은 그림의 중앙에 결합됩니다. 

 

장점 :한 번에 여러가지의 척도를 비교할 수 있는 장점이 있고, 축설정을 통해 여러개의 그래프를 비교했을 때 해당 유형을 파악하기 좋습니다.

단점 : 가까이에 있는 변수가 아니면 수치를 비교하기가 어렵고, 수치 차이가 작은 경우에는 시각화하는 효율이 떨어집니다.

 

3) Word cloud

워드클라우드 (또한 태그 클라우드 또는 가중 목록 ) 텍스트 데이터의 시각적 표현이다. 단어는 일반적으로 한 단어로 되어 있으며 각각의 중요도는 글꼴 크기나 색상으로 표시됩니다.

 

장점 :미학적으로 보기 좋다.

단점 : 긴 단어는 중요도와 달리 많은 자리를 차지하여 오해를 불러일으킬 수 있고 글자크기를 지정하는 게 불가능.

# Libraries
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# Create a list of word
text=("Python Python Python Matplotlib")

# Create the wordcloud object
wordcloud = WordCloud(width=480, height=480, margin=0).generate(text)

# Display the generated image:
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.margins(x=0, y=0)
plt.show()

4) Parallel ( 평행 그래프 )

평행 플롯 숫자 변수 집합의 여러 개별 관찰 (일련)의 특징을 비교할 수있다.

Pandas 파이썬으로 병렬 좌표 플롯을 그리는 가장 좋은 방법입니다.

# libraries
import pandas
import matplotlib.pyplot as plt
from pandas.tools.plotting import parallel_coordinates

# Take the iris dataset
import seaborn as sns
data = sns.load_dataset('iris')

# Make the plot
parallel_coordinates(data, 'species', colormap=plt.get_cmap("Set2"))
plt.show()

 

5) Lollipop ( 사탕 그래프 )

롤리팝 차트는  barplot보다 잘 쓰이는 대안책입니다.

Lollipop plot는 데이터세트의 각 요소를 세그먼트와 원으로 표시합니다.

입력 형식에 따라 stem()함수 를 사용하거나 vline() 함수를 사용합니다.

# Create a dataframe
import pandas as pd
df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'values':np.random.uniform(size=20) })

# Reorder it following the values:
ordered_df = df.sort_values(by='values')
my_range=range(1,len(df.index)+1)

# Make the plot
plt.stem(ordered_df['values'])
plt.xticks( my_range, ordered_df['group'])

 

6) Circular Bar plot ( 원형 막대 그래프 )

Circular Bar plot barplot과 거의 동일합니다.

3차원(cartesian coordinate)으로 표현되지 않고 2차원(polar coordinate)으로 표현된다.

장점 : 시각적으로 뛰어남.

단점 : 시각화 과정이 약간 까다롭고 일반적인 막대 그래프보다 정확도가 떨어진다.

 

 

4. 구성 파악 - 계층 ( Part Of A Whole )

 

1) Treemap

treemap는 데이터세트의 각 요소를 직사각형으로 표시합니다. 

각 요소가 전체와 비교하여 어느 정도의 비율을 가지고 있는지 알 수 있습니다.

# libraries
import matplotlib.pyplot as plt
import squarify    # pip install squarify (algorithm for treemap)
import pandas as pd

# Create a data frame with fake data
df = pd.DataFrame({'nb_people':[8,3,4,2], 'group':["group A", "group B", "group C", "group D"] })

# plot it
squarify.plot(sizes=df['nb_people'], label=df['group'], alpha=.8 )
plt.axis('off')
plt.show()

 

2) Venn Diagram

벤 다이어그램 (또한 primary diagram, set diagram또는 logic diagram)은 데이터 세트들의 유한 집합 사이의 모든 가능한 논리적 관계를 표현합니다.

벤 다이어그램으로는 2~3개의 집합을 비교하는 것이 좋고 그 이상으로는 지저분해져서 시각화 효율이 떨어집니다.

# library
import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Use the venn2 function
venn2(subsets = (10, 5, 2), set_labels = ('Group A', 'Group B'))
plt.show()

 

3) Donut

도넛형 차트는 기본적으로 중앙 영역이 잘린 원형 차트 입니다.

데이터의 변수간 비율의 차이가 크다면 비교하기 좋게 시각화 할 수 있습니다.

# library
import matplotlib.pyplot as plt

# create data
size_of_groups=[12,11,3,30]

# Create a pieplot
plt.pie(size_of_groups)

# add a circle at the center to transform it in a donut chart
my_circle=plt.Circle( (0,0), 0.7, color='white')
p=plt.gcf()
p.gca().add_artist(my_circle)

plt.show()

 

4) Pie chart ( 원형 차트 )

파이 차트는 각각 전체의 비율을 나타내는 것으로 섹터로 분할한 원 차트이다. 이것은 가장 일반적인 시각화 유형 중 하나이다.

단점 : 도넛형 차트와 같이 변수간 차이가 사소할 경우에는 눈으로 파악할 수 가 없다.

# library
import matplotlib.pyplot as plt

# create data: an array of values
size_of_groups=[12,11,3,30]

# Create a pieplot
plt.pie(size_of_groups)
plt.show()

 

5) Dendrogram

dendrogram은 네트워크 구조이다. 

나뭇가지와 같이 연결된 여러 개의 노드를 생성하는 루트 노드로 구성됩니다.

계층 구조를 나타내거나 클러스터링 알고리즘의 결과를 표시하는 데 사용됩니다.

 

아래 그림과 같이 히트맵과 같이 사용하여 클러스터링 결과를 표시하는 게 일반적입니다.

6) Circular Packing

계층적 원형 패킹과 비계층적 원형 패킹으로 나눠진다.

계층적 Circular Packing은 계층 구조의 맨 아래를 나타내는 거품이 상위 계층 구조 거품으로 캡슐화됩니다.

비계층적 Circular Packing은 각기 다른 원형을 시각화 한다.

계층적 Circular Packing