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 |