Графический анализ данных и функций
Рисование 2D графиков функций
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5,5, 0.5)
y = x**2 + np.sin(x)
plt.figure()
plt.scatter(x,y, marker='*', c='r')
plt.show()
График с линией
plt.figure()
plt.plot(x,y)
plt.show()
Добавляем подписи осей и заголовок
plt.figure()
plt.plot(x,y, 'r')
plt.xlabel('x')
plt.ylabel('$y=x^2 + sin(x)$')
plt.title('Парабола с синусоидой')
plt.show()
Совмещаем несколько графиков
plt.figure()
plt.plot(x, y, 'r', y, x, 'g')
plt.xlabel('x')
plt.ylabel('$y=x^2 + sin(x), x=x(y)$')
plt.title('Парабола с синусоидой + обратное соответствие')
plt.show()
Сохраняем файл графика
x1 = np.arange(-5, 20, 0.5)
dirname = '/content/drive/My Drive/Colab Notebooks/COMP_MATH/1_4 Numpy/'
plt.figure(figsize=(8,6))
plt.plot(x, y, 'r')
plt.plot(x1, x1, 'b', linestyle='--')
plt.plot(y, x, 'g')
plt.xlabel('x')
plt.ylabel('$y=x^2 + sin(x), x=x(y)$')
plt.title('Парабола с синусоидой + обратное соответствие')
plt.savefig(dirname+'plt_xy.png')
plt.savefig(dirname+'plt_xy.svg')
Готовим облако тегов
from wordcloud import WordCloud
dirname = '/content/drive/My Drive/Colab Notebooks/COMP_MATH/1_4 Numpy/'
with open(dirname + 'comp_methods_1.txt', mode='r') as f:
text = f.read()
wordcloud = WordCloud(width=300, max_font_size=60, stopwords=[], max_words=70, min_font_size=6).generate(text)
pics_arr = wordcloud.to_array()
pics_arr.shape
plt.figure(figsize=(12,8))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
Выводим одновременно несколько графиков
fig, axes = plt.subplots(2)
axes[0].plot(x, y, 'r')
axes[1].plot(y, x, 'g')
Рисование 3D графиков функций
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')
zline = np.linspace(0,15,1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot(xline, yline, zline, 'gray')
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.rand(100)
ydata = np.cos(zdata) + 0.1 * np.random.rand(100)
ax.scatter(xdata, ydata, zdata, c=zdata, cmap='Greens')
ax.text2D(0.1, 0.9, 'Линия, заданная параметрически $x=\sin(z); y=cos(z)$',
transform=ax.transAxes)
from matplotlib import cm
def f(x,y):
return np.sin(np.sqrt(x**2 + y**2))
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X,Y = np.meshgrid(x,y)
Z = f(X,Y)
fig, ax = plt.subplots(figsize=(8,6))
surf = ax.contourf(X,Y,Z, 30, cmap=plt.cm.Spectral)
ax.set_xlabel('x'); ax.set_ylabel('y')
ax.text(0.0, 0.0, '$(0,0)$', color='black')
fig.suptitle('Линия уровня функции $\sin {\sqrt {x^2 + y^2}}$', y=0)
fig.colorbar(surf, shrink=0.9, aspect=5)
fig.show()
Рисование контурных графиков z(x,y) в 3D
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 50, cmap='binary')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
fig.show()
Если угол обзора не оптимален, мы можем задать требуемый угол зрения, образованнный с плоскостью XOY и азимутальный угол вращения XOY относительно оси OZ
ax.view_init(60,30)
Сеточный график
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_wireframe(X, Y, Z, color='black')
Цветоной сеточный график
fig = plt.figure()
ax = plt.axes(projection='3d')
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='viridis',
edgecolor='black')
fig.colorbar(surf, shrink=0.6, aspect=5)
ax.set_title('surface')
fig.show()
## Сохранение графиков и чтение их из файла
dirname = '/content/drive/My Drive/Colab Notebooks/COMP_MATH/1_4 Numpy/'
fig.savefig(dirname+'plot3d.png')
Чтение графиков из файла
with open(dirname+'plot3d.png', 'rb') as plot_file:
plot_img = plt.imread(plot_file)
plt.imshow(plot_img)
plt.show()