REF: Matplotlib


Введение

 
import numpy as np, matplotlib.pyplot as plt

plt.plot   ((0.1, 0.5, 0.9, 0.1), (0.1, 0.9, 0.1, 0.1))
plt.plot   ((0, 0, 1, 1, 0), (0, 1, 1, 0, 0))
plt.scatter( [0.5, 0.5], [0.2, 0.5])
plt.bar    ([0.1,0.3,0.7, 0.9], [0.1,0.2,0.2,0.1], width=0.1)
plt.show()

 
import numpy as np
import matplotlib.pyplot as plt
 
plt.figure(figsize=(8,4)) 

plt.plot    (x, np.sin(x))   
plt.scatter (x, np.cos(x), s=5)  

plt.xlabel('x axis label')  
plt.ylabel(r'phase field $\phi$', 
          {'color': 'C0', 'fontsize': 20})

plt.title ('Sine and Cosine')
plt.legend(['Sine', 'Cosine'])

plt.text(4, 0.75, r'$E=mc^2$', 
         {'color': 'black', 'fontsize': 24,  
         'ha': 'center', 'va': 'center'})

plt.show()

Цвета и стиль линий

 
import numpy as np                       
import matplotlib.pyplot as plt   

x = np.linspace(0, 4*np.pi, 100)     

plt.plot(x, np.sin(x - 0), color='blue')       
plt.plot(x, np.sin(x - 1), color='g')          
plt.plot(x, np.sin(x - 2), color='0.75')       
plt.plot(x, np.sin(x - 3), color='#FFDD44')    
plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3))
plt.plot(x, np.sin(x - 5), color='chartreuse')

 
plt.plot(x, x + 0, '-g')            # solid green
plt.plot(x, x + 1, '--c')           # dashed cyan
plt.plot(x, x + 2, '-.k')           # dashdot black
plt.plot(x, x + 3, ':r');           # dotted red
plt.plot(x, x + 4, linestyle='-')   # solid
plt.plot(x, x + 5, linestyle='--')  # dashed
plt.plot(x, x + 6, linestyle='-.')  # dashdot
plt.plot(x, x + 7, linestyle=':')   # dotted

 
x = np.zeros(8)

fig, ax = plt.subplots()

ax.plot(np.arange(-1, 7), 
        color=(0.1,0.2,0.9,0.5), 
        linewidth=12)
ax.plot(x,   color=(0.9,0.2,0.9))# RGB
ax.plot(x+1, color='#0a0b0c')    # hex RGB
ax.plot(x+2, color='#0a0b0c3a')  # hex RGBA

 
ax.plot(x+3, color='0.3')        # уровень серого 
ax.plot(x+4, color='g')          # b,g,r,c,m,y,k,w
ax.plot(x+5, color='indigo')     # название из X11/CSS4

fig.set_figwidth(12)
fig.set_figheight(6)
fig.set_facecolor('mintcream')
ax.set_facecolor('whitesmoke')

plt.show()

Оси, масштаб

 
import numpy as np                       
import matplotlib.pyplot as plt   

plt.plot(x, np.sin(x))

plt.xlim(-1, 11)
plt.ylim(-1.5, 1.5);

plt.grid(True, linestyle='--')                     

 
ax = plt.figure().add_subplot(1, 1, 1)

plt.plot(x, np.sin(x))
plt.axis([-1, 11, -1.5, 1.5]) # [xmin, xmax, ymin, ymax]

majors, minors = np.arange(0,11,2), np.arange(0,11,1)

ax.set_xticks(majors); ax.set_xticks(minors, minor=True)
ax.set_yticks(majors); ax.set_yticks(minors, minor=True)

ax.grid(which='major', color='#CCCCCC', linestyle='--')
ax.grid(which='minor', color='#CCCCCC', linestyle=':')

 
plt.plot(x, np.sin(x))
plt.axis('tight');                           # все точки поместятся

plt.plot(x, np.sin(x))
plt.axis('equal')                            # одинаковый масштаб по x и y 

ax = plt.axes()
ax.plot(x, np.sin(x))
ax.set(xlim=(0, 10), ylim=(-2, 2),  xlabel='x', ylabel='sin(x)', title='A Plot')

Объединение графиков

 
x = np.linspace(-5,5, 100)
y = np.where(x < -2.5, 0, 
       np.where(x < 2.5, 0.2*x+0.5, 1))

plt.figure(figsize=(12,4))              
plt.subplot(1, 2, 1)                    
plt.plot(x,1/(1+np.exp(-x)))
plt.plot(x,y)
plt.legend(['sigmoid', 'hard_sigmoid'])

plt.subplot(1, 2, 2)
plt.plot(x, np.tanh(x))
plt.axvline(0, c="g")
plt.axhline(0, c="g")
plt.legend(['tanh'])
plt.show()                    

 
x = np.linspace(0,2*np.pi,100)
y1, y2 = np.cos(x), np.exp(x)

fig,ax = plt.subplots()
plt.grid(axis = 'x', color='#AAA', linestyle='--') 

ax.plot(x, y1, color="red", marker=".")  
ax.set_xlabel("x", fontsize = 14)
ax.set_ylabel("y1", color="red", fontsize=14)

ax2=ax.twinx()  
ax2.plot(x, y2, color="blue")
ax2.set_ylabel("y2",color="blue",fontsize=14)

Рассеяния

 
import numpy as np                       
import matplotlib.pyplot as plt          

np.random.seed(1)                        
x_dat = np.random.rand(1200, 2)          
y_dat = np.sum((x_dat-0.5)**2, axis=1) < 0.1

plt.figure (figsize=(5, 5))              
plt.scatter(x_dat[:,0], x_dat[:,1], 
            s=30, c=y_dat, cmap=plt.cm.Paired, edgecolors='k')
plt.show()                               

Гистограммы

 
import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 0, 0.1                          
s = np.random.normal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, 30, density=True)

plt.plot(bins, 
        1/(sigma*np.sqrt(2*np.pi)) * \
        np.exp(- (bins-mu)**2/(2*sigma**2) ),
        linewidth=2, color='r')
plt.show()

Карта высот

 
X_MIN, X_MAX, DX, Y_MIN, Y_MAX, DY = 0,1,0.01,  0,1,0.01
x = np.arange(X_MIN, X_MAX+DX, DX)
y = np.arange(Y_MIN, Y_MAX+DX, DX)

X, Y =  np.meshgrid(x, y)     # 2D массивы

Z = np.maximum(X,Y)           # значения высот

plt.figure(figsize=(5,4))     # размер картинки (с баром)
 
plt.imshow(Z, extent=[X_MIN, X_MAX, Y_MIN, Y_MAX], 
           origin='lower', cmap='seismic', alpha=0.5)      # как полупрозрачную картинку
plt.colorbar()                                             # справа столбик значений

contours = plt.contour(X, Y, Z, 11, colors='black')        # контурные линии 
plt.clabel(contours, inline=True, fontsize=8, fmt='%1.2f') # с высотами

plt.show()

3D графики

 
from mpl_toolkits.mplot3d import Axes3D

N1 = 1000
phi = 2*np.pi*np.random.random((N1,))
r   = np.random.randint(2,5,(N1,))

X = np.zeros((N1,3))
X[:,0] = r*np.cos(phi)
X[:,1] = r*np.sin(phi)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:,0], X[:,1], X[:,2], s=5)
plt.show()

Вывод картинок

 
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist

# load mnist dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()

plt.figure(figsize=(5, 4))         # plot the 20 mnist digits
for i in range(20):
    plt.subplot(4, 5, i + 1)    
    plt.imshow(x_train[i,:,:], cmap='gray')
    plt.axis('off')
plt.show()

Информация