Одна статья, чтобы получить различные примеры Matplotlib

глубокое обучение

​​​​​​​​Обзор: Matplotlib — это библиотека для построения графиков для Python. Его можно использовать с NumPy, а Matplotlib также является общей библиотекой для рисования для глубокого обучения, в основном для графического отображения результатов обучения, потому что оно более интуитивно понятно и легче находит проблемы при обучении.

Эта статья опубликована в сообществе HUAWEI CLOUD.«Matplotlib, основа глубокого обучения, получить каждый пример в одной статье. Рекомендуется собрать и обратиться к нему позже 丨[Variety AI Show]», Автор: Кориандр чат игра.

Matplotlib — это библиотека для построения графиков для Python. Его можно использовать с NumPy.Matplotlib также является общей библиотекой рисования для глубокого обучения.В основном он отображает результаты обучения в виде графиков, потому что он более интуитивно понятен и легче находить проблемы в обучении.Приходите учиться сегодня и вперед! !

1, сначала приходите к демо-анализу

Вот типичный график: если мы хотим такой график, что нам делать, какие данные нам нужно подготовить и на какие свойства такого графика следует обратить внимание?

img

1. Как сделать картинку? Как создать артборд?

2. Как установить данные? Как поставить данные x и y

3. Как нарисовать маленькую форму типа цвета различных линий в левом верхнем углу значка настроек?

4. Внешний вид, как быть с разными цветами разных линий?

5. Как отображать?

6. Как сохранить?

Столько вопросов, что делать? Шаг за шагом, позвольте мне сначала показать вам код, чтобы увидеть, как много вы можете понять.

x = np.linspace(0, 2, 100)

plt.plot(x, x, label='linear')  # Plot some data on the (implicit) axes.
plt.plot(x, x**2, label='quadratic')  # etc.
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()

2. Концепции в matplotlib

Следующая картинка — это картинка с официального сайта, на которой обозначено множество понятий, в основном, мы можем видеть общеупотребительные, и кажется, что большинство из них можно понять.

img

Фигура (контейнер)

Все изображение называется Фигура, и Фигура используется для сохранения возвращенных осей (координатное поле).Фигурка может содержать любое количество осей, что можно понимать как контейнер.

Оси (поле координат)

Его можно понимать как единый артборд, оси содержат две оси (оси координат) (три оси на трехмерной диаграмме), каждая ось имеет заголовок (метод: set_title()), метку x (метод: set_xlabel() ), метка Y (метод: set_ylabel()) Примечание: данный объект Axes может быть включен только в один рисунок.

Ось (координатная ось)

Это объект, похожий на числовую линию. Вы можете установить стиль шкалы на оси и значение на оси с помощью методов Axis и Axis. Положение шкалы определяется объектом Locater, а значение, соответствующее масштабу, определяется объектом Formatter.

Резюме: Axes — это в значительной степени то, что мы имеем в виду.plot’. Можно сказать, что это один лист бумаги. У определенной фигуры может быть много осей, но определенные оси могут быть только у одной фигуры.

Оси в 2-мерном пространстве содержат две оси (т.е. ось x и ось y), оси в 3-мерном пространстве содержат три оси (т.е. ось x, ось y и ось z).Обратите внимание на различие понятий Оси и Оси..

Ось — это объект числовой оси, который в основном используется для установки ограничений данных в осях (то есть значений двух конечных точек), отметок на оси (то есть шкалы меток на оси) и метка шкалы галочек.

Подграфик: Подграфик, один или несколько объектов подграфика (например, осей) создаются под объектом фигуры для рисования изображений.

оси: установите цвет границы оси и поверхности, размер значения масштаба координат и отображение сетки

фигура: управляет разрешением, цветом границы, размером фигуры и настройками подграфика.

font: семейство шрифтов, размер шрифта и настройки стиля. grid: установка цвета и линейности сетки.

легенда: установить легенду и текст в ней для отображения строки: установить линию (цвет, тип линии, ширину и т.д.) и маркеры

патч: это графический объект, который заполняет 2D-пространство, например многоугольники и круги. Контролируйте ширину линии, цвет, настройки сглаживания и многое другое.

savefig: сохраненная фигура может быть установлена ​​индивидуально. Например, установите белый фон визуализируемого файла.

verbose: Устанавливает вывод информации matplotlib во время выполнения, например, тихий, полезный, отладочный и раздражающий отладку.

xticks и yticks: задайте цвет, размер, ориентацию и размер метки для основных и второстепенных делений оси x,y.

3. Графика, поддерживаемая matplotlib

3.1 Линия линейного графика

import matplotlib.pyplot as plt
import numpy as np

# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

ax.set(xlabel='time (s)', ylabel='voltage (mV)',
       title='About as simple as it gets, folks')
ax.grid()

fig.savefig("test.png")
plt.show()

img

3.2 История гистограммы

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)

# example data
mu = 100  # mean of distribution
sigma = 15  # standard deviation of distribution
x = mu + sigma * np.random.randn(437)

num_bins = 50

fig, ax = plt.subplots()

# the histogram of the data
n, bins, patches = ax.hist(x, num_bins, density=True)

# add a 'best fit' line
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))
ax.plot(bins, y, '--')
ax.set_xlabel('Smarts')
ax.set_ylabel('Probability density')
ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')

# Tweak spacing to prevent clipping of ylabel
fig.tight_layout()
plt.show()

img

3.3 Маршрут

import matplotlib.path as mpath
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

Path = mpath.Path
path_data = [
    (Path.MOVETO, (1.58, -2.57)),
    (Path.CURVE4, (0.35, -1.1)),
    (Path.CURVE4, (-1.75, 2.0)),
    (Path.CURVE4, (0.375, 2.0)),
    (Path.LINETO, (0.85, 1.15)),
    (Path.CURVE4, (2.2, 3.2)),
    (Path.CURVE4, (3, 0.05)),
    (Path.CURVE4, (2.0, -0.5)),
    (Path.CLOSEPOLY, (1.58, -2.57)),
    ]
codes, verts = zip(*path_data)
path = mpath.Path(verts, codes)
patch = mpatches.PathPatch(path, facecolor='r', alpha=0.5)
ax.add_patch(patch)

# plot control points and connecting lines
x, y = zip(*path.vertices)
line, = ax.plot(x, y, 'go-')

ax.grid()
ax.axis('equal')
plt.show()

img

3.4 Разброс

img

3.5 Полярные графики

import numpy as np
import matplotlib.pyplot as plt
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])  # Less radial ticks
ax.set_rlabel_position(-22.5)  # Move radial labels away from plotted line
ax.grid(True)

ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()

img

3.6 круговая диаграмма

import matplotlib.pyplot as plt

# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  # only "explode" the 2nd slice (i.e. 'Hogs')

fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)
ax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.

plt.show()

img

3.7 3D-графика

import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import numpy as np

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})

# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

# Customize the z axis.
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
# A StrMethodFormatter is used automatically
ax.zaxis.set_major_formatter('{x:.02f}')

# Add a color bar which maps values to colors.
fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

img

#使用numpy产生数据
x=np.arange(-5,5,0.1)
y=x*3

#创建窗口、子图
#方法1:先创建窗口,再创建子图。(一定绘制)
fig = plt.figure(num=1, figsize=(15, 8),dpi=80)     #开启一个窗口,同时设置大小,分辨率
ax1 = fig.add_subplot(2,1,1)  #通过fig添加子图,参数:行数,列数,第几个。
ax2 = fig.add_subplot(2,1,2)  #通过fig添加子图,参数:行数,列数,第几个。
print(fig,ax1,ax2)
#方法2:一次性创建窗口和多个子图。(空白不绘制)
fig,axarr = plt.subplots(4,1)  #开一个新窗口,并添加4个子图,返回子图数组
ax1 = axarr[0]    #通过子图数组获取一个子图
print(fig,ax1)
#方法3:一次性创建窗口和一个子图。(空白不绘制)
ax1 = plt.subplot(1,1,1,facecolor='white')      #开一个新窗口,创建1个子图。facecolor设置背景颜色
print(ax1)
#获取对窗口的引用,适用于上面三种方法
# fig = plt.gcf()   #获得当前figure
# fig=ax1.figure   #获得指定子图所属窗口

# fig.subplots_adjust(left=0)                         #设置窗口左内边距为0,即左边留白为0。

#设置子图的基本元素
ax1.set_title('python-drawing')            #设置图体,plt.title
ax1.set_xlabel('x-name')                    #设置x轴名称,plt.xlabel
ax1.set_ylabel('y-name')                    #设置y轴名称,plt.ylabel
plt.axis([-6,6,-10,10])                  #设置横纵坐标轴范围,这个在子图中被分解为下面两个函数
ax1.set_xlim(-5,5)                           #设置横轴范围,会覆盖上面的横坐标,plt.xlim
ax1.set_ylim(-10,10)                         #设置纵轴范围,会覆盖上面的纵坐标,plt.ylim

xmajorLocator = MultipleLocator(2)   #定义横向主刻度标签的刻度差为2的倍数。就是隔几个刻度才显示一个标签文本
ymajorLocator = MultipleLocator(3)   #定义纵向主刻度标签的刻度差为3的倍数。就是隔几个刻度才显示一个标签文本

ax1.xaxis.set_major_locator(xmajorLocator) #x轴 应用定义的横向主刻度格式。如果不应用将采用默认刻度格式
ax1.yaxis.set_major_locator(ymajorLocator) #y轴 应用定义的纵向主刻度格式。如果不应用将采用默认刻度格式

ax1.xaxis.grid(True, which='major')      #x坐标轴的网格使用定义的主刻度格式
ax1.yaxis.grid(True, which='major')      #x坐标轴的网格使用定义的主刻度格式

ax1.set_xticks([])     #去除坐标轴刻度
ax1.set_xticks((-5,-3,-1,1,3,5))  #设置坐标轴刻度
ax1.set_xticklabels(labels=['x1','x2','x3','x4','x5'],rotation=-30,fontsize='small')  #设置刻度的显示文本,rotation旋转角度,fontsize字体大小

plot1=ax1.plot(x,y,marker='o',color='g',label='legend1')   #点图:marker图标
plot2=ax1.plot(x,y,linestyle='--',alpha=0.5,color='r',label='legend2')   #线图:linestyle线性,alpha透明度,color颜色,label图例文本

ax1.legend(loc='upper left')            #显示图例,plt.legend()
ax1.text(2.8, 7, r'y=3*x')                #指定位置显示文字,plt.text()
ax1.annotate('important point', xy=(2, 6), xytext=(3, 1.5),  #添加标注,参数:注释文本、指向点、文字位置、箭头属性
            arrowprops=dict(facecolor='black', shrink=0.05),
            )
#显示网格。which参数的值为major(只绘制大刻度)、minor(只绘制小刻度)、both,默认值为major。axis为'x','y','both'
ax1.grid(b=True,which='major',axis='both',alpha= 0.5,color='skyblue',linestyle='--',linewidth=2)

axes1 = plt.axes([.2, .3, .1, .1], facecolor='y')       #在当前窗口添加一个子图,rect=[左, 下, 宽, 高],是使用的绝对布局,不和以存在窗口挤占空间
axes1.plot(x,y)  #在子图上画图
plt.savefig('aa.jpg',dpi=400,bbox_inches='tight')   #savefig保存图片,dpi分辨率,bbox_inches子图周边白色空间的大小
plt.show()    #打开窗口,对于方法1创建在窗口一定绘制,对于方法2方法3创建的窗口,若坐标系全部空白,则不绘制

Суммировать

Большая часть приведенных выше данных взята с официального сайта,

мат сюжет lib.org/stable/map о...

Если вышесказанное неточно, вы можете обратиться к официальному сайту.Если вы не можете полностью понять это, я могу рисовать только простые картинки, которые могут удовлетворить повседневные потребности.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~