Python_07_matplotlib
In [3]:
import matplotlib.pyplot as plt 
import numpy as np 
%matplotlib inline 
#주피터 노트북에서 그래프를 표시 
In [4]:
#data작성 
np.random.seed(1)
x= np.arange(10)
y= np.random.rand(10) # 0과 1사이의 값 10개 

plt.plot(x,y)
plt.show()
In [5]:
%reset
In [12]:
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib inline 

def f(x):
    return(x-2)*x*(x+2)
In [7]:
print(f(1))
-3
In [8]:
print(f(np.array([1,2,3])))
[-3  0 15]
In [9]:
x= np.arange(-3,3.5,0.5)
print(x)
[-3.  -2.5 -2.  -1.5 -1.  -0.5  0.   0.5  1.   1.5  2.   2.5  3. ]

np.linespace(start,stop,num,endpoint=True)

  • endpoint=True : stop으로 주어진 값을 포함시킴
  • endpoint=False : stop으로 주어진 값을 포함시키지 않음
In [10]:
x=np.linspace(-3,3,10)
print(np.round(x,2))
[-3.   -2.33 -1.67 -1.   -0.33  0.33  1.    1.67  2.33  3.  ]
In [11]:
plt.plot(x,f(x))
plt.show()
In [19]:
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib inline 

#함수정의
def f2(x,w):
    return(x-w)*x*(x+w)

#x를 정의
x=np.linspace(-3,3,100)

#차트를 묘사 
plt.plot(x,f2(x,2), color="black", label="w=2")
plt.plot(x,f2(x,1), color="cornflowerblue", label="w=1")
plt.legend(loc="upper left") #범래 표시 
plt.ylim(-15,15) #y축의 범위를 지정 
plt.title('$f_2(x)$') #제목 #$가 없으면 f_2(x)로 나옴 
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()
In [29]:
import matplotlib 
matplotlib.colors.cnames 
Out[29]:
{'aliceblue': '#F0F8FF',
 'antiquewhite': '#FAEBD7',
 'aqua': '#00FFFF',
 'aquamarine': '#7FFFD4',
 'azure': '#F0FFFF',
 'beige': '#F5F5DC',
 'bisque': '#FFE4C4',
 'black': '#000000',
 'blanchedalmond': '#FFEBCD',
 'blue': '#0000FF',
 'blueviolet': '#8A2BE2',
 'brown': '#A52A2A',
 'burlywood': '#DEB887',
 'cadetblue': '#5F9EA0',
 'chartreuse': '#7FFF00',
 'chocolate': '#D2691E',
 'coral': '#FF7F50',
 'cornflowerblue': '#6495ED',
 'cornsilk': '#FFF8DC',
 'crimson': '#DC143C',
 'cyan': '#00FFFF',
 'darkblue': '#00008B',
 'darkcyan': '#008B8B',
 'darkgoldenrod': '#B8860B',
 'darkgray': '#A9A9A9',
 'darkgreen': '#006400',
 'darkgrey': '#A9A9A9',
 'darkkhaki': '#BDB76B',
 'darkmagenta': '#8B008B',
 'darkolivegreen': '#556B2F',
 'darkorange': '#FF8C00',
 'darkorchid': '#9932CC',
 'darkred': '#8B0000',
 'darksalmon': '#E9967A',
 'darkseagreen': '#8FBC8F',
 'darkslateblue': '#483D8B',
 'darkslategray': '#2F4F4F',
 'darkslategrey': '#2F4F4F',
 'darkturquoise': '#00CED1',
 'darkviolet': '#9400D3',
 'deeppink': '#FF1493',
 'deepskyblue': '#00BFFF',
 'dimgray': '#696969',
 'dimgrey': '#696969',
 'dodgerblue': '#1E90FF',
 'firebrick': '#B22222',
 'floralwhite': '#FFFAF0',
 'forestgreen': '#228B22',
 'fuchsia': '#FF00FF',
 'gainsboro': '#DCDCDC',
 'ghostwhite': '#F8F8FF',
 'gold': '#FFD700',
 'goldenrod': '#DAA520',
 'gray': '#808080',
 'green': '#008000',
 'greenyellow': '#ADFF2F',
 'grey': '#808080',
 'honeydew': '#F0FFF0',
 'hotpink': '#FF69B4',
 'indianred': '#CD5C5C',
 'indigo': '#4B0082',
 'ivory': '#FFFFF0',
 'khaki': '#F0E68C',
 'lavender': '#E6E6FA',
 'lavenderblush': '#FFF0F5',
 'lawngreen': '#7CFC00',
 'lemonchiffon': '#FFFACD',
 'lightblue': '#ADD8E6',
 'lightcoral': '#F08080',
 'lightcyan': '#E0FFFF',
 'lightgoldenrodyellow': '#FAFAD2',
 'lightgray': '#D3D3D3',
 'lightgreen': '#90EE90',
 'lightgrey': '#D3D3D3',
 'lightpink': '#FFB6C1',
 'lightsalmon': '#FFA07A',
 'lightseagreen': '#20B2AA',
 'lightskyblue': '#87CEFA',
 'lightslategray': '#778899',
 'lightslategrey': '#778899',
 'lightsteelblue': '#B0C4DE',
 'lightyellow': '#FFFFE0',
 'lime': '#00FF00',
 'limegreen': '#32CD32',
 'linen': '#FAF0E6',
 'magenta': '#FF00FF',
 'maroon': '#800000',
 'mediumaquamarine': '#66CDAA',
 'mediumblue': '#0000CD',
 'mediumorchid': '#BA55D3',
 'mediumpurple': '#9370DB',
 'mediumseagreen': '#3CB371',
 'mediumslateblue': '#7B68EE',
 'mediumspringgreen': '#00FA9A',
 'mediumturquoise': '#48D1CC',
 'mediumvioletred': '#C71585',
 'midnightblue': '#191970',
 'mintcream': '#F5FFFA',
 'mistyrose': '#FFE4E1',
 'moccasin': '#FFE4B5',
 'navajowhite': '#FFDEAD',
 'navy': '#000080',
 'oldlace': '#FDF5E6',
 'olive': '#808000',
 'olivedrab': '#6B8E23',
 'orange': '#FFA500',
 'orangered': '#FF4500',
 'orchid': '#DA70D6',
 'palegoldenrod': '#EEE8AA',
 'palegreen': '#98FB98',
 'paleturquoise': '#AFEEEE',
 'palevioletred': '#DB7093',
 'papayawhip': '#FFEFD5',
 'peachpuff': '#FFDAB9',
 'peru': '#CD853F',
 'pink': '#FFC0CB',
 'plum': '#DDA0DD',
 'powderblue': '#B0E0E6',
 'purple': '#800080',
 'rebeccapurple': '#663399',
 'red': '#FF0000',
 'rosybrown': '#BC8F8F',
 'royalblue': '#4169E1',
 'saddlebrown': '#8B4513',
 'salmon': '#FA8072',
 'sandybrown': '#F4A460',
 'seagreen': '#2E8B57',
 'seashell': '#FFF5EE',
 'sienna': '#A0522D',
 'silver': '#C0C0C0',
 'skyblue': '#87CEEB',
 'slateblue': '#6A5ACD',
 'slategray': '#708090',
 'slategrey': '#708090',
 'snow': '#FFFAFA',
 'springgreen': '#00FF7F',
 'steelblue': '#4682B4',
 'tan': '#D2B48C',
 'teal': '#008080',
 'thistle': '#D8BFD8',
 'tomato': '#FF6347',
 'turquoise': '#40E0D0',
 'violet': '#EE82EE',
 'wheat': '#F5DEB3',
 'white': '#FFFFFF',
 'whitesmoke': '#F5F5F5',
 'yellow': '#FFFF00',
 'yellowgreen': '#9ACD32'}

그래프 여러 개 보여주기

  • subplot
  • plt.subplot(n1, n2, n)
  • n1: 전체 그림의 세로 개수
  • n2: 전체 그림의 가로 개수
  • n : 현재 그림의 위치 (왼쪽 위부터 오른쪽으로 1,2,3,...)
    &nbsp : 0이 아니고 1부터 시작
In [83]:
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib inline 

plt.figure(figsize=(10,5)) #figure 지정
plt.subplots_adjust(wspace=0.3, hspace=0.3) #그래프 간 간격지정 
for i in range(6):
    plt.subplot(2,3,i+1) #그래프의 위치 지정/ 2행 3열, 1번부터 시작 
    plt.title(i+1)
    plt.plot(x, f2(x,i), color="hotpink")
    plt.ylim(-25,25)
    plt.grid(True)
plt.show()
In [34]:
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib inline 

def f3(x0,x1):
    r= 2 * x0**2 + x1**2 
    ans= r * np.exp(-r)
    return ans 
xn=9
x0= np.linspace(-2,2,xn)
x1= np.linspace(-2,2,xn)
y= np.zeros((len(x0), len(x1))) # 0으로 만들어줌
for i0 in range(xn):
    for i1 in range(xn):
        y[i1, i0]= f3(x0[i0], x1[i1]) 
        
In [27]:
print(x0)
[-2.         -1.91836735 -1.83673469 -1.75510204 -1.67346939 -1.59183673
 -1.51020408 -1.42857143 -1.34693878 -1.26530612 -1.18367347 -1.10204082
 -1.02040816 -0.93877551 -0.85714286 -0.7755102  -0.69387755 -0.6122449
 -0.53061224 -0.44897959 -0.36734694 -0.28571429 -0.20408163 -0.12244898
 -0.04081633  0.04081633  0.12244898  0.20408163  0.28571429  0.36734694
  0.44897959  0.53061224  0.6122449   0.69387755  0.7755102   0.85714286
  0.93877551  1.02040816  1.10204082  1.18367347  1.26530612  1.34693878
  1.42857143  1.51020408  1.59183673  1.67346939  1.75510204  1.83673469
  1.91836735  2.        ]
In [28]:
print(y)
[[7.37305482e-05 1.32338877e-04 2.31126710e-04 ... 2.31126710e-04
  1.32338877e-04 7.37305482e-05]
 [9.88167049e-05 1.77092462e-04 3.08776613e-04 ... 3.08776613e-04
  1.77092462e-04 9.88167049e-05]
 [1.30739998e-04 2.33937265e-04 4.07205749e-04 ... 4.07205749e-04
  2.33937265e-04 1.30739998e-04]
 ...
 [1.30739998e-04 2.33937265e-04 4.07205749e-04 ... 4.07205749e-04
  2.33937265e-04 1.30739998e-04]
 [9.88167049e-05 1.77092462e-04 3.08776613e-04 ... 3.08776613e-04
  1.77092462e-04 9.88167049e-05]
 [7.37305482e-05 1.32338877e-04 2.31126710e-04 ... 2.31126710e-04
  1.32338877e-04 7.37305482e-05]]
In [30]:
print(np.round(y,1))
[[0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]]
In [45]:
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib inline

plt.figure(figsize=(7,5))
plt.gray()
plt.pcolor(y)
plt.colorbar()
plt.show()
In [46]:
import numpy as np 
import matplotlib.pyplot as plt 
%matplotlib inline

plt.figure(figsize=(7,5))
plt.pcolor(y,cmap='hot')
plt.colorbar()
plt.show()

surface

In [87]:
from mpl_toolkits.mplot3d import Axes3D

xx0,xx1 = np.meshgrid(x0,x1)

plt.figure(figsize=(5,3.5))
ax = plt.subplot(1,1,1,projection='3d')
ax.plot_surface(xx0,xx1,y,rstride=1,cstride=1,alpha=0.3,color='blue',edgecolor='black')
#(x값, y값, z값, row step size(1:전부표시, 2:한칸씩 띄워서표시), column step size, alpha=투명도, color, edgecolor=선의 색)

ax.set_zticks((0,0.2))  # z의 눈금을 0.~0.2로 제한
ax.view_init(75,-95)    # ax.view_init(인수1,인수2)
plt.show()              # 인수1 : 상하회전 각도(0:옆/90/위)
                        # 인수2 : 좌우 회전각도 양수(시계방향)
In [90]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

xn = 50
x0 = np.linspace(-2,2,xn)
x1 = np.linspace(-2,2,xn)
y = np.zeros((len(x0),len(x1)))

for i0 in range(xn):
    for i1 in range(xn):
        y[i0, i1] = f3(x0[i0], x1[i1])
        
xx0, xx1 = np.meshgrid(x0,x1)
plt.figure(1, figsize= (4,4))
cont = plt.contour(xx0,xx1,y,6, colors='black')
#숫자 5는 등고선의 높이를 6단계로 지시 

cont.clabel(fmt='%3.2f',fontsize=8) 
#plt.contour의 반환값을 cont에 저장하고 cont.clabel로 출력

plt.xlabel("$x_0$", fontsize=14)
plt.ylabel("$x_1$", fontsize=14)
plt.show()

'Python' 카테고리의 다른 글

Python_pandas(판다스):시리즈,데이터프레임,색인,인덱싱,sorting  (0) 2020.09.09
Python 기초09_vectorize  (0) 2020.09.08
Python 기초07_Numpy2  (0) 2020.09.08
Python 기초06_Numpy  (0) 2020.09.07
Python 기초05  (0) 2020.09.07

+ Recent posts