본문 바로가기
  • 블랜더 거실
IT인터넷/Python

[디지털 문해력]Python으로 시작하는 데이터 분_Matplotlib 데이터 시각화(211002)

by bandiburi 2021. 10. 2.

matplotlib 그래프들


○ Line Plot

fig, ax = plt.subplots()
x = np.arange(15)
y = x**2
ax.plot(x,y, linestype = ":",
                   marker = "*",
                   color = "r")
linestype : "-", "--",


line style
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, linestyle="-" # solid
ax.plot(x, x+2, linestyle="--" # dashed
ax.plot(x, x+4, linestyle="-." # dashdot
ax.plot(x, x+6, linestyle=":" #dotted

color
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, color="r")
ax.plot(x, x+2, color="green")
ax.plot(x, x+4, color='0.8') # 0~1 값으로 넣으면 gray scale로 표현(회색)
ax.plot(x, x+6, color="#524FA1") # RGB에 대한 16진수도 표현가능

marker
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, marker=".")
ax.plot(x, x+2, marker="o")
ax.plot(x, x+4, marker='v')
ax.plot(x, x+6, marker="s")
ax.plot(x, x+8, marker="*")

○ 그래프 옵션

축 경계 조정하기
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x))
ax.set_xlim(-2,12)
ax.set_ylim(-1.5, 1.5)

범례
fig, ax = plt.subplots()
ax.plot(x,x,label='y=x')
ax.plot(x,x**2, label='y=x^2')
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.legend(
    loc='upper right'
    shadow=True,  # 박스 그림자
    fancybox=True, # 모서리 라운드지게
    borderpad=2)  # 박스 크기


[실습1]
from elice_utils import EliceUtils
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

elice_utils = EliceUtils()

#이미 입력되어 있는 코드의 다양한 속성값들을 변경해 봅시다.
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(
    x, x, label='y=x',
    marker='o',
    color='blue',
    linestyle=':'
)
ax.plot(
    x, x**2, label='y=x^2',
    marker='^',
    color='red',
    linestyle='--'
)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.legend(
    loc='upper left',
    shadow=True,
    fancybox=True,
    borderpad=2
)

fig.savefig("plot.png")
elice_utils.send_image("plot.png")

 

○ Scatter

fig, ax = plt.subplot()
x = np.arange(10)
ax.plot(
   x, x**2, "o",
   markersize=15,
   markerfacecolor='white'
   markeredgecolor="blue")

fig,ax = plt.subplot()
x = np.random.randn(50)
y = np.random.randn(50
colors = np.random.randint(0,100,50)
sizes = 500 * np.pi * np.random.rand(50)**2
ax.scatter(x,y,c=colors, s=sizes,alpha=0.3) # alpha는 투명도

 

○ bar plot


x=np.arange(10)
fig,ax = plt.subplots(figsize=(12,4))
  ax.bar(x,x*2)
bar plot을 누적해서
x = np.random.rand(3)
y = np.random.rand(3)
z = np.random.rand(3)
data = [x, y, z]
fig, ax = plt.subplots()
x_ax = np.arange(3)
for i in x_ax:
  ax.bar(x_ax, data[i], 
  bottom=np.sum(data[:i], axis=0))
ax.set_xticks(x_ax)
ax.set_xticklabels(["A","B","C"])

 

○ Histogram


fig,ax = plt.subplots()
data = np.random.randn(1000)
ax.hist(data, bins=50)

 


[실습] bar & histogram


elice_utils = EliceUtils()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
fname='./NanumBarunGothic.ttf'
font = fm.FontProperties(fname = fname).get_name()
plt.rcParams["font.family"] = font


x = np.array(["축구", "야구", "농구", "배드민턴", "탁구"])
y = np.array([18, 7, 12, 10, 8])
z = np.random.randn(1000)

fig, axes = plt.subplots(1, 2, figsize=(8, 4))

# Bar 그래프
axes[0].bar(x, y)
# 히스토그램
axes[1].hist(z, bins = 50)



○ Matplotlib with pandas

df = pd.read_csv("./president_heights.csv")
fig, ax = plt.subplots()
ax.plot(df["order"], df["height(cm)"], label="height")
  ax.set_xlabel("order")
  ax.set_ylabel("height(cm)")
  ax.legend()
fire = df[(df['Type 1']=='Fire')| df['Type2']=='Fire')]
water = df[(df['Type1']=='Water') | (df['Type2']=='Water')]
fig,ax = plt.subplots()
ax.scatter(fire['Attack'], fire['Defense'], color='R', label='Fire', marker="*", s=50)
ax.scatter(water['Attack'], water['Defense'], color='B', label='Water', s=25
ax.set_xlabel("Attack")
ax.set_ylabel("Defense")
ax.legend(loc="upper right")


[실습]

from elice_utils import EliceUtils
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

elice_utils = EliceUtils()

df = pd.read_csv("./data/pokemon.csv")
fire = df[
    (df['Type 1']=='Fire') | ((df['Type 2'])=="Fire")
]

water = df[
    (df['Type 1']=='Water') | ((df['Type 2'])=="Water")
]

fig, ax = plt.subplots()
ax.scatter(fire['Attack'], fire['Defense'],
    color='R', label='Fire', marker="*", s=50)
ax.scatter(water['Attack'], water['Defense'],
    color='B', label="Water", s=25)
ax.set_xlabel("Attack")
ax.set_ylabel("Defense")
ax.legend(loc="upper right")

fig.savefig("plot.png")
elice_utils.send_image("plot.png")

 

[실습] 토끼와 거북이 경주 결과 시각화


from elice_utils import EliceUtils
from matplotlib import pyplot as plt
import pandas as pd

plt.rcParams["font.family"] = 'NanumBarunGothic'
elice_utils = EliceUtils()

# 아래 경로에서 csv파일을 읽어서 시각화 해보세요
# 경로: "./data/the_hare_and_the_tortoise.csv"
df = pd.read_csv("./data/the_hare_and_the_tortoise.csv")
df.set_index("시간",inplace=True)
print(df)
    
fig, ax = plt.subplots()
ax.plot(df["토끼"],label='토끼')
ax.plot(df["거북이"], label='거북이')
ax.legend()

# 그래프를 확인하려면 아래 두 줄의 주석을 해제한 후 코드를 실행하세요.
fig.savefig("plot.png")
elice_utils.send_image("plot.png")


○ Matplotlib :파이썬에서 데이터를 그래프나 차트로 시각화할 수 있는 라이브러리

import matplotlib as plt

x = [1,2,3,4,5]
y = [1,2,3,4,5]
plt.plot(x,y)
plt.title("First Plot")
plt.xlabel("x")
plt.ylabel("y")
그래프 그려보기2
import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x,y)
ax.set_title("First Plot")
ax.set_xlabel("x")
ax.set_ylabel("y")
fig.set_dpi(300)
fig.savefig("first_plot.png")

 


○ 여러개  그래프 그리기

x = np.linspace(0, np.pi*4, 100)
fig.axes = plt.subplot(2,1) * 한 도화지에 세로축으로 2개의 그래프
axes[0].plot(x, np.sin(x))
axes[1].plot(x, np.cos(x))

728x90
반응형

댓글