Python/Python matplotlib

Python matplotlib : table (table 그리기, 좌표평면 위 표 그리기)

CosmosProject 2024. 4. 10. 01:43
728x90
반응형

 

 

 

matplotlib의 table method는 좌표평면 위에 table을 그리는 기능을 합니다.

 

예시를 봅시다.

 

 

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e']
})
print(df)
print(df.values)

list_col_label = ['col1', 'col2']
list_row_color = ['pink', 'lightskyblue', 'lightgreen', 'royalblue', '#5e84ff']
list_col_color = ['powderblue', 'silver']

plt.table(
    cellText=df.values,  # table data
    colLabels=list_col_label,  # column label (column name)
    colWidths=[0.1, 0.1, 0.1],  # column width
    colColours=list_col_color,  # column label color
    loc='upper right'  # table location
)

plt.show()



-- Result
   col1 col2
0     1    a
1     2    b
2     3    c
3     4    d
4     5    e

[[1 'a']
 [2 'b']
 [3 'c']
 [4 'd']
 [5 'e']]

 

위 예시는 DataFrame에 있는 데이터를 기준으로 table을 그리는 코드입니다.

 

코드의 결과는 위와 같습니다.

 

plt.table(
    cellText=df.values,  # table data
    colLabels=list_col_label,  # column label (column name)
    colWidths=[0.1, 0.1, 0.1],  # column width
    colColours=list_col_color,  # column label color
    loc='upper right'  # table location
)

 

- cellText=df.values

cellText는 table의 cell에 넣을 dataset입니다.

df.values를 보면 2차원 array이며 내부 array에는 하나의 행에 대한 정보가 하나의 내부 array에 담겨 있습니다.

 

- colLabels=list_col_label

column name을 정하는 요소입니다.

 

- colWidths=[0.1, 0.1, 0.1]

column 너비를 정하는 요소입니다. list에 담긴 숫자들의 순서대로 column width가 결정됩니다.

 

- colColours=list_col_color

column name이 적힌 cell의 색상을 의미합니다.

마찬가지로 각 column 별로 색상을 지정할 수 있습니다.

 

- loc='upper right'

table을 나타낼 위치입니다.

upper right은 table을 좌표평면의 오른쪽 위에 위치킨다는 의미입니다.

 

loc로 사용할 수 있는 keyword는 아래와 같습니다.

 

upper right

upper left

lower left

lower right

center left

center right

lower center

upper center

center

top right

top left

bottom left

bottom right

right

left

top

bottom

 

 

 

 

이번에는 새로운 option을 추가해 보았습니다.

 

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e']
})
print(df)
print(df.values)

list_row_label = ['Row1', 'Row2', 'Row3', 'Row4', 'Row5']
list_col_label = ['col1', 'col2']
list_row_color = ['pink', 'lightskyblue', 'lightgreen', 'royalblue', '#5e84ff']
list_col_color = ['powderblue', 'silver']

plt.table(
    cellText=df.values,  # table data
    rowLabels=list_row_label,  # row label (row name)
    colLabels=list_col_label,  # column label (column name)
    colWidths=[0.1, 0.1, 0.1],  # column width
    rowColours=list_row_color,  # row label color
    colColours=list_col_color,  # column label color
    loc='upper right'  # table location
)

plt.show()




-- Reuslt
   col1 col2
0     1    a
1     2    b
2     3    c
3     4    d
4     5    e

[[1 'a']
 [2 'b']
 [3 'c']
 [4 'd']
 [5 'e']]

 

- rowLabels=list_row_label

row name을 지정할 수 있습니다.

 

- rowColours=list_row_color

row color를 정할 수 있습니다.

 

Row name이 생성되었으며 Row name에 각각 컬러링이 된 것을 볼 수 있습니다.

 

 

 

 

 

 

 

 

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e']
})
print(df)
print(df.values)

list_row_label = ['Row1', 'Row2', 'Row3', 'Row4', 'Row5']
list_col_label = ['col1', 'col2']
list_row_color = ['pink', 'lightskyblue', 'lightgreen', 'royalblue', '#5e84ff']
list_col_color = ['powderblue', 'silver']

fig, graph = plt.subplots(nrows=2, ncols=2)

for r in range(2):
    for c in range(2):
        graph[r][c].table(
            cellText=df.values,  # table data
            rowLabels=list_row_label,  # row label (row name)
            colLabels=list_col_label,  # column label (column name)
            colWidths=[0.1, 0.1, 0.1],  # column width
            rowColours=list_row_color,  # row label color
            colColours=list_col_color,  # column label color
            loc='center'  # table location
        )

plt.show()




-- Result
   col1 col2
0     1    a
1     2    b
2     3    c
3     4    d
4     5    e

[[1 'a']
 [2 'b']
 [3 'c']
 [4 'd']
 [5 'e']]

 

이번엔 subplots에 table을 그려보았습니다.

 

 

위처럼 각 subplot에 table이 그려진 것을 볼 수 있습니다.

 

 

 

 

 

728x90
반응형