본문 바로가기
Pyhton/matplotlib

Day37_Python(13)_Pm

by roaring90s 2025. 10. 1.

barEx1

import matplotlib.pyplot as plt

plt.rc('font', family = 'Malgun Gothic')

customer = ['김길동','홍길동','최길동','이길동','오길동']
customer_index = range(len(customer))
y_data = [120, 90, 200, 110, 230]

fig=plt.figure(figsize=(6,4))
ax1 = fig.add_subplot((111))
ax1.bar(customer_index, y_data, color='darkblue')
plt.xticks(customer_index, customer)
plt.xlabel('고객 이름')
plt.ylabel('수요')
plt.show()

wonen_pop = [5,39,45,22]
man_pop = [-5, -25, -50, -20]
x = range(4)
plt.barh(x, wonen_pop, color = '0.25')
#barh = x,y 축이 바껴 x축이 y축으로 가서 그래프가 그려짐
plt.barh(x, man_pop, color = '0.75')
#가운데를 기준으로 양쪽으로 나눠지는 그래프가 완성됨
plt.show()

 


barEx2

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib.pyplot import xlabel, ylabel

plt.rc('font', family = 'Malgun Gothic')

data = pd.read_csv('covid_data.csv', index_col='국가')
chartdata = data['4월06일']
print(chartdata)

def makeBarChart1(x, y, colors, xlabel, ylabel, title):
    plt.figure(figsize=(8,6))
    plt.bar(x, y, color=colors, alpha=0.7)
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.title(title)

    plt.show()

colors = ['b','g','r','c','m','y','k']
makeBarChart1(x=chartdata.index, y=chartdata, colors=colors,
              xlabel='국가명', ylabel='발생 수', title='국가별 코로나 발생 건 수(4월6일)')

 

 

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib.pyplot import xlabel, ylabel

plt.rc('font', family = 'Malgun Gothic')

data = pd.read_csv('covid_data.csv', index_col='국가')
chartdata = data['4월06일']
print(chartdata)

def makeBarChart1(x, y, colors, xlabel, ylabel, title):
    plt.figure(figsize=(11,8))
    plt.bar(x, y, color=colors, alpha=0.7)
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.title(title)

#y축 티커에 , 넣기
    YTICK_INTERVAL = 50000
    maxlim = int((y.max() / YTICK_INTERVAL) +1) * YTICK_INTERVAL
    values = np.arange(0, maxlim +1, YTICK_INTERVAL)
    plt.yticks(values, ['%s'%format(val, ',') for val in values])

#그래프 안에 % 넣기
    ratio = 100 * y / y.sum()
    for idx in range(y.size):
        ratioVal = f'{ratio[idx]:.1f}%'
        plt.text(x=idx, y=y[idx] / 2, s=ratioVal, ha='center', fontsize= 9)

#그래프 끝에 건 붙이기
        value=format(y[idx], ',') +'건'
        plt.text(x=idx, y=y[idx] + 2000, s=value, ha='center', fontsize=9)

#평균값 구하고 빨간 수평선 넣기
    meanval = y.mean()
    meantext = f'평균:{int(meanval)}건'
    plt.axhline(y=meanval, color='r', linewidth=1, ls='--',)
    plt.text(x=y.size-1, y=meanval + 3000, s=meantext, ha='center', fontsize=11)


    plt.show()

colors = ['b','g','r','c','m','y','k']
makeBarChart1(x=chartdata.index, y=chartdata, colors=colors,
              xlabel='국가명', ylabel='발생 수', title='국가별 코로나 발생 건 수(4월6일)')

 


 

barEx3

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family = 'Malgun Gothic')

data = pd.read_csv('covid_data.csv', index_col='국가')
datachart = data.loc[['프랑스','중국','영국','이란'], '4월06일':'4월08일']
print(datachart)

datachart.T.plot(kind='bar', rot=0, title='국가별 일별 발생수', legend=False,
                 stacked=True)        #데이터프레임 형태
#stacked = 데이트를 쌓아서 한 그래프로 올림
plt.show()

 


pieEx1

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rc('font', family='Malgun Gothic')

data = [5, 25, 50, 20]
plt.pie(data)
plt.show()
#3시를 기준으로 반시계반향으로 데이터가 들어간다.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rc('font', family='Malgun Gothic')
#
# data = [5, 25, 50, 20]
# plt.pie(data)
# plt.show()
# #3시를 기준으로 반시계반향으로 데이터가 들어간다.

data = pd.read_csv('covid_data.csv', index_col='국가')
chartdata = data.loc[['독일','프랑스','중국','영국'], '4월06일']
#print(chartdata)
mylabels = chartdata.index
# print(mylabels)     #index 객체만 뽑아 올 수 있다.
mycolors = ['blue','#6aff00','yellow','#ff113c']

plt.figure(figsize=(8,8))
plt.pie(chartdata,              #해당 데이터가 1차원 데이터만 들어간다.
        labels=mylabels,
        startangle=90,          #12시에 부터 시작하고 싶다 하면 90
        colors=mycolors,
        autopct='%.2f%%',
        counterclock=False,    #역순
        explode=(0,0.9,0,0),
        shadow=True)
plt.legend(loc='best')
plt.title('주요 국가 코로나 발생 비율(4월6일)', fontsize= 16)
plt.xlabel('<국가명>', fontsize=14)
plt.show()

 

 


 

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rc('font', family='Malgun Gothic')
#
# data = [5, 25, 50, 20]
# plt.pie(data)
# plt.show()
# #3시를 기준으로 반시계반향으로 데이터가 들어간다.

data = pd.read_csv('covid_data.csv', index_col='국가')
chartdata = data.loc[['독일','프랑스','중국','영국'], '4월06일']
#print(chartdata)
mylabels = chartdata.index
# print(mylabels)     #index 객체만 뽑아 올 수 있다.
mycolors = ['blue','#6aff00','yellow','#ff113c']

def getlabelFormat(pct, allvalues):
    absoulte = int(pct / 100 * np.sum(allvalues))
    return f'{pct:.2f}%\n{absoulte}명'


plt.figure(figsize=(8,8))
plt.pie(chartdata,              #해당 데이터가 1차원 데이터만 들어간다.
        labels=mylabels,
        startangle=90,          #12시에 부터 시작하고 싶다 하면 90
        colors=mycolors,
        autopct=lambda pct: getlabelFormat(pct, chartdata),
        textprops=dict(color='#bbbbbb',weight='bold',size=15),
        counterclock=False,    #역순
        explode=(0,0.2,0,0),
        shadow=True)
plt.legend(title='국가명',title_fontsize=15,loc='best')
plt.title('주요 국가 코로나 발생 비율(4월6일)', fontsize= 16)
plt.xlabel('<국가명>', fontsize=14)
plt.show()


 

pieEx2

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rc('font', family = 'Malgun Gothic')

data= pd.read_csv('covid_data.csv', index_col='국가')
chartdata = data.loc[['독일','프랑스','중국','영국','이탈리아'], ['4월06일','4월07일']]

chartdata = chartdata.values
print(chartdata)

cmap = plt.get_cmap('tab20c')
print(cmap)
print(cmap(np.arange(5)* 4))    #칼라맵
outer_colors = cmap(np.arange(5)* 4)
inner_colors = cmap(np.arange(10))

INNER_VACANT_CIRCLE_SIZE = 0.3
OUTER_PCTDISTANCE = 0.85
INNER_PCTDISTANCE = 0.75

cum_sum = chartdata.sum(axis=1)
fig, ax = plt.subplots(figsize=(8,8))             #현재 저 값이 디폴트값, figsize 만 써도됨
ax.pie(cum_sum, radius=1, colors=outer_colors,
       labels=['독일','프랑스','중국','영국','이탈리아'],
       autopct='%.2f%%',
       pctdistance=OUTER_PCTDISTANCE,
       wedgeprops=dict(width=INNER_VACANT_CIRCLE_SIZE, edgecolor='w'))

print(chartdata.flatten())

ax.pie(chartdata.flatten(), radius=1 -INNER_VACANT_CIRCLE_SIZE, colors=inner_colors,
       wedgeprops=dict(width=INNER_VACANT_CIRCLE_SIZE, edgecolor='w'),
       autopct='%.2f%%',
       pctdistance=INNER_PCTDISTANCE)

ax.set_title('주요 국가별 중첩 파이 그래프', fontsize=16)

plt.show()

 


 

'Pyhton > matplotlib' 카테고리의 다른 글

Day38_Python(14)_Pm  (0) 2025.10.02
Day38_Python(14)_Am  (0) 2025.10.02
Day37_Python(13)_Am  (0) 2025.10.01
Day36_Python(12)_Pm  (0) 2025.09.30
Day36_Python(12)_Am  (0) 2025.09.30