Рубрики
Без рубрики

Матплотлиб – простое руководство с видео

Matplotlib с Python – самая мощная комбинация в области визуализации данных и науки о данных. Это руководство занимает 25 минут вашего времени — Если вы смотрите видео, он займет вас 2-4 часа. Но это будет отличное вложение вашего времени, потому что он сделает вас лучшим кодировщиком и более эффективными данными … Matplotlib – простое руководство с видео Подробнее »

Автор оригинала: Chris.

Matplotlib с Python – самая мощная комбинация в области визуализации данных и науки о данных.

Это руководство занимает 25 минут вашего времени – если вы смотрите видео, это заберет вас 2-4 часа Отказ Но это будет отличные вложения вашего времени, потому что это заставит вас Лучший кодер и Более эффективные данные ученые Отказ

Давайте посмотрим на следующие участки – вы узнаете, как генерировать каждый из них в этом полном направлении в библиотеку MATPLOTLIB.

Красиво не так ли?

Или как вам нравится этот:

Это выглядит очень утонченным, но это просто, как вы увидите в следующем курсе MatPlotlib. Но первые вещи сначала начнусь с смирения смиренной линии!

Матплотлиб линия сюжет

Сюжет линии является наиболее знаковым из всех участков.

Нарисовать один в Matplotlib, используйте PLT.PLOT () Функция и передайте его список чисел, используемых в качестве значений оси Y.

По умолчанию значения оси X – это указатели списка прошедшей линии. MATPLOTLIB автоматически соединяет точки с синей линией по умолчанию. Вы можете изменить тип линии и размер маркера с дополнительными аргументами.

Синтаксис PLT.PLOT () :

plot([x], y, [fmt], *, data=None, **kwargs)

Пример звонков:

>>> plot(x, y)        # plot x and y using default line style and color
>>> plot(x, y, 'bo')  # plot x and y using blue circle markers
>>> plot(y)           # plot y using x as index array 0..N-1
>>> plot(y, 'r+')     # ditto, but with red plusses

Минимальный пример заключается в следующем:

import matplotlib.pyplot as plt
plt.plot([0, 1, 2, 3])
plt.ylabel('line plot')
plt.show()

Выходной вывод, сгенерированный этими четырьмя строками кода, представляет собой следующую простую строкую строку:

Подробнее В нашем полном руководстве Finxter: Сюжет линии Matplotlib – полезное иллюстрированное руководство

Matplotlib рассеивает участок

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

Следующий код показывает минимальный пример создания графика разброса в Python.

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4, 5]
y = [1, 2, 4, 8, 16, 32]

plt.plot(x, y, 'o')
plt.show()

Вы выполняете следующие шаги:

  • Импортируйте модуль MATPLOTLIB.
  • Создайте данные для (х, у) точки.
  • Сюжет данные, используя PLT.PLOT () функция. Первый аргумент является намерением для х ценности. Второй аргумент является утечником для y ценности. Третий аргумент – это стиль точки разброса.

Вот как этот результат выглядит как:

Подробнее В нашем полном руководстве Finxter: Разбросно-разброс Matplotlib – простое иллюстрированное руководство

Легенда Matplotlib

Вы нанесли некоторые данные в Matplotlib. Но вы не знаете, какие данные показывают, что? Пришло время для легенды!

Как добавить легенду в библиотеке Python’s Matplotlib?

  • Метить это с метка Аргумент ключевых слов в вашем методе сюжета.
  • До PLT.Show () , вызов PLT.LEGEND () Ваш сюжет будет отображаться с легендой.

Вот минимальный пример:

# Import necessary modules
import matplotlib.pyplot as plt
import numpy as np

# Optional: Use seaborn style as it looks nicer than matplotlib's default
import seaborn as sns; sns.set()

# Generate data
vals = np.array([0, 1, 2, 3, 4])

# Plot and label
plt.plot(vals, label='vals')

plt.legend()
plt.show()

Если вы поступите и маркируете несколько строк, легенда будет содержать несколько записей.

plt.plot(vals, label='Linear')
plt.plot(vals**2, label='Squared')
plt.plot(vals**0.5, label='Square Root')

plt.legend()
plt.show()

Подробнее В нашем полном руководстве Finxter: Matplotlib Legend – полезное иллюстрированное руководство

Матплотлиб гистограмма

Во-первых, нам нужны некоторые данные.

Я пошел в это Сайт, чтобы узнать среднюю высоту и стандартное отклонение женщин США. Общеизвестно, что высота обычно распространяется. Так что я использовал Python’s Случайные Модуль для создания 10 000 образцов

import random

# data obtained online
mean = 162
std = 7.1

# set seed so we can reproduce our results
random.seed(1)

# use list comprehension to generate 10,000 samples
us_female_heights = [random.normalvariate(mean, std) for i in range(10000)]

Дополнительный шаг: участки по умолчанию Seaborn выглядят лучше, чем matplotlib, поэтому давайте их используем.

import seaborn as sns

sns.set()

Самая основная гистограмма в matplotlib.pyplot действительно легко сделать

import matplotlib.pyplot as plt

plt.hist(us_female_heights)
plt.show()

Не плохо для основных настроек. Общая форма ясна. Мы видим, что большинство данных сосредоточены в середине – 155см-170см. Мы также можем увидеть счетчики частоты.

Поскольку мы знаем наши данные, мы знаем, что ось X высота в CM, а ось Y – это частота. Но вы должны всегда Пометьте свои оси. Другие люди не знают, что показывает этот график. Добавление этикеток делает это понятно. Напишите эти три строки кода, чтобы дать графику заголовка и этикетки оси.

plt.hist(us_female_heights)
plt.title('Height of 10,000 US Females')
plt.xlabel('Height (cm)')
plt.ylabel('Frequency')
plt.show()

Подробнее В нашем полном руководстве Finxter: Матплотлиб гистограмма – простое иллюстрированное руководство

Matplotlib 3d участок

В дополнение к Импорт matplotlib.pyplot как PLT и звонить PLT.Show () , чтобы создать 3D участок в Matplotlib, вам нужно:

  1. Импорт AXES3D объект
  2. Инициализировать свой Фигура и AXES3D объекты
  3. Получите некоторые 3D-данные
  4. Сюжет его, используя Оси Нотации и стандартные вызовы функций
# Standard import
import matplotlib.pyplot as plt

# Import 3D Axes 
from mpl_toolkits.mplot3d import axes3d

# Set up Figure and 3D Axes 
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Get some 3D data
X = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Y = [2, 5, 8, 2, 10, 1, 10, 5, 7, 8]
Z = [6, 3, 9, 6, 3, 2, 3, 10, 2, 4]

# Plot using Axes notation and standard function calls
ax.plot(X, Y, Z)
plt.show()

Потрясающие! Вы только что создали свой первый трехмерный участок! Не волнуйтесь, если это было немного быстро, давайте погрузимся в более подробный пример.

Подробнее В нашем полном руководстве Finxter: MATPLOTLIB 3D участник – Полезное иллюстрированное руководство

MATPLOTLIB 3D участок продвинутый

Четыре шага, необходимые для создания продвинутых трехмерных участков, такие же, как те, которые необходимы для создания основных. Если вы не понимаете эти шаги, ознакомьтесь с моей статьей о том, как сначала сделать основные 3D-участки.

Самая сложная часть создания поверхностных и каркажных участков – шаг 3: Получение 3D-данных. Matplotlib на самом деле включает в себя функцию помощника AXES3D.GET_TEST_DATA () создать некоторые данные для вас. Он принимает поплавок и, для достижения наилучших результатов, выберите значение от 0 до 1. Он всегда производит тот же сюжет, но разные поплавки дают вам данные разных размеров и, таким образом, влияют на то, насколько подробно описан сюжет.

Тем не менее, лучший способ выучить 3D-построение – создать пользовательские участки.

В конце шага 3 вы хотите иметь три Numpy массивы X , Y и Z , который вы перейдете к AX.PLOT_WIREFRAME () или ax.plot_surface () Отказ Вы можете сломать шаг 3 на четыре шага:

  1. Определите пределы оси X Axis и Y
  2. Создайте сетку XY-точек (чтобы получить X и Y)
  3. Определите Z-функцию
  4. Примените Z-функцию на x и y (чтобы получить z)

В MatPlotlib Axis Z вертикальна по умолчанию. Итак, «дно» AXES3D Объект – это сетка очков XY. Для поверхностных или каркажных участков каждой пары точек XY имеет соответствующее значение Z. Итак, мы можем подумать о поверхностных/каркажных разах в качестве результата нанесения некоторой Z-функции для каждой пары XY на «нижней части» AXES3D объект.

Поскольку на плоскости XY бесконечно много количества, невозможно отобразить каждому на Z-значение Z. Вам просто нужна сумма, достаточно большая, чтобы обмануть людей – что-то выше 50 пар обычно хорошо работает.

Чтобы создать свои темы XY, сначала необходимо определить пределы оси X Axis и Y. Покажем, вы хотите, чтобы X-значения в диапазоне от -5 до +5 и Y-значений от -2 до +2. Вы можете создать массив номеров для каждого из них, используя np.linspace () функция. По причинам, которые станут ясными позже, я сделаю х иметь 100 баллов, а y иметь 70.

x = np.linspace(-5, 5, num=100)
y = np.linspace(-2, 2, num=70)

Оба х и y 1D массивы, содержащие Num одинаково разнесенные поплавки в диапазонах [-5, 5] и [-2, 2] соответственно.

Поскольку XY-самолет представляет собой 2D-объект, вам теперь нужно создать прямоугольную сетку всех паре XY. Для этого используйте numpy Функция np.meshgrid () Отказ Требуется N 1D массивы и превращает их в N-мерную сетку. В этом случае требуется две 1-й массивы и превращает их в 2D сетку.

X, Y = np.meshgrid(x, y)

Теперь вы создали X и Уход Так что давайте осмотрим их.

print(f'Type of X: {type(X)}')
print(f'Shape of X: {X.shape}\n')
print(f'Type of Y: {type(Y)}')
print(f'Shape of Y: {Y.shape}')
Type of X: 
Shape of X: (70, 100)

Type of Y: 
Shape of Y: (70, 100)

Оба Икс и Y Обмочненные массивы одной и той же формы: (70, 100) . Это соответствует размеру y и х соответственно. Как вы ожидаете, размер y Диктует высоту массива, то есть количество строк и размер х Диктует ширину, то есть количество столбцов.

Обратите внимание, что я использовал строчные буквы х и y Для 1D массивов и прописных букв X и Y для 2D массивов. Это стандартная практика при изготовлении трехмерных участков, и я использую его по всей статье.

Теперь вы создали свою сетку очков; Пришло время определить функцию, чтобы подать заявку на них все. Поскольку эта функция выводит значения Z, я называю его Z-функцией. Общие Z-функции содержать np.sin () и np.cos () Поскольку они создают повторение, циклические узоры, которые выглядят интересными, когда это нанесено в 3D. Кроме того, Z-функции обычно объединяют оба X и Y Переменные в качестве 3D-участков видят, как все переменные взаимодействуют.

# Define z-function with 2 arguments: x and y
def z_func(x, y):
    return np.sin(np.cos(x) + y)

# Apply to X and Y
Z = z_func(X, Y)

Здесь я определил Z-функцию, которая принимает 2 переменных – х и y – и это комбинация np.sin () и np.cos () Функции. Тогда я применил его к Икс и Y Чтобы получить Z множество. Благодаря Numpy вещание Python Python применяет Z-функцию для каждой пары XY почти мгновенно и спасает вас от необходимости написать дико неэффективное для петля.

Обратите внимание, что Z такая же форма и тип, как и как X и Y Отказ

print(f'Type of Z: {type(Z)}')
print(f'Shape of Z: {Z.shape}')
Type of Z: 
Shape of Z: (70, 100)

Теперь, когда у вас есть данные, все, что осталось сделать, это сделать участки. Давайте поставим все вышеупомянутый код вместе:

# Set up Figure and 3D Axes
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Create x and y 1D arrays
x = np.linspace(-5, 5, num=100)
y = np.linspace(-2, 2, num=70)

# Create X and Y 2D arrays
X, Y = np.meshgrid(x, y)

# Define Z-function
def z_func(x, y): return np.sin(np.cos(x) + y)

# Create Z 2D array
Z = z_func(X, Y)

# Plot using Axes notation
ax.plot_wireframe(X, Y, Z)
# Set axes lables
ax.set(xlabel='x', ylabel='y', zlabel='z')
plt.show()

Отлично, я нашел вышеуказанный участок, играя с разными Z-функциями и думаю, что это выглядит довольно круто! Z-функции, содержащие np.log () , np.exp () , np.sin. ( ) , np.cos () и комбинации х и y Обычно приводит к интересным участкам – я призываю вас экспериментировать сами.

Теперь я создам 3 разных Z-функция с тем же Икс и Уход Как и раньше и создать подпункту из них, чтобы вы могли видеть различия.

# Set up Figure and Axes
fig, axes = plt.subplots(1, 3, subplot_kw=dict(projection='3d'),
                        figsize=plt.figaspect(1/3))

# Create 3 z-functions
def z_1(x, y): return np.exp(np.cos(x)*y)
def z_2(x, y): return np.log(x**2 + y**4)
def z_3(x, y): return np.sin(x * y)

# Create 3 Z arrays 
Z_arrays = [z_1(X, Y), z_2(X, Y), z_3(X, Y)]
# Titles for the plots
z_func_names = ['np.exp(np.cos(x)*y)', 'np.log(x**2 + y**4)', 'np.sin(x * y)']

# Plot all 3 wireframes
for Z_array, z_name, ax in zip(Z_arrays, z_func_names, axes):
    ax.plot_wireframe(X, Y, Z_array)
    ax.set(title=z_name)
plt.show()

Я думаю, что все эти изображения продемонстрируют силу 3D-построения, и я надеюсь, что они побуждают вас создать свои собственные.

Теперь вы знаете, как создать какую-либо поверхность или карта каркаса с вашими данными. Но до сих пор вы использовали только настройки по умолчанию. Давайте изменим их, используя доступные аргументы ключевых слов.

Подробнее В нашем полном руководстве Finxter: MATPLOTLIB 3D участок продвинутый

Матплотлиб анимация

Вот полный код:

# Standard imports
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

# Set up empty Figure, Axes and Line objects
fig, ax = plt.subplots()
# Set axes limits so that the whole image is included
ax.set(xlim=(-0.1, 2*np.pi+0.1), ylim=(-1.1, 1.1))
# Draw a blank line
line, = ax.plot([], []) 

# Define data - one sine wave
x = np.linspace(0, 2*np.pi, num=50)
y = np.sin(x)

# Define animate function
def animate(i):
    line.set_data(x[:i], y[:i])
    return line,

# Pass to FuncAnimation
anim = FuncAnimation(fig, animate, frames=len(x)+1, interval=30, blit=True)

# Save in the current working directory
anim.save('sin.mp4')

Подробнее В нашем полном руководстве Finxter: Матплотлиб анимация – Полезное иллюстрированное руководство

Виджеты Matplotlib – создание интерактивных участков со слайдами

В этом разделе описывается, как генерировать интерактивные участки, используя .widgets Пакет из Библиотека Matplotlib Отказ Как можно вывести из имени, .widgets Пакет позволяет создавать различные типы интерактивных кнопок, которые могут быть использованы для изменения того, что отображается в графике MATPLOTLIB.

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

Но давайте начнем с окончания: Вот код, который вы собираетесь исследовать, а полученный участок:

import numpy as np
from scipy.interpolate import UnivariateSpline
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

# Initial x and y arrays
x = np.linspace(0, 10, 30)
y = np.sin(0.5*x)*np.sin(x*np.random.randn(30))

# Spline interpolation
spline = UnivariateSpline(x, y, s = 6)
x_spline = np.linspace(0, 10, 1000)
y_spline = spline(x_spline)

# Plotting
fig = plt.figure()
plt.subplots_adjust(bottom=0.25)
ax = fig.subplots()
p = ax.plot(x,y)
p, = ax.plot(x_spline, y_spline, 'g')

# Defining the Slider button
# xposition, yposition, width and height
ax_slide = plt.axes([0.25, 0.1, 0.65, 0.03])

# Properties of the slider
s_factor = Slider(ax_slide, 'Smoothing factor',
                  0.1, 6, valinit=6, valstep=0.2)

# Updating the plot
def update(val):
    current_v = s_factor.val
    spline = UnivariateSpline(x, y, s = current_v)
    p.set_ydata(spline(x_spline))
    #redrawing the figure
    fig.canvas.draw()
    
# Calling the function "update" when the value of the slider is changed
s_factor.on_changed(update)
plt.show()

Выходные данные – это интерактивное окно сюжет Python, которое позволяет управлять графиком со слайдером:

Подробнее В нашем полном руководстве Finxter: Виджеты Matplotlib – создание интерактивных участков со слайдами

Создание красивых тепломаперов с морским

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

В этом видео мы увидим, как создать тепловую карту для представления общего числа случаев Covid-19 в разных странах США, в разные дни. Для достижения этого результата мы будем эксплуатировать Морской , пакет Python, который предоставляет множество причудливых и мощных функций для построения данных.

Вот код, который будет обсуждаться:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#url of the .csv file
url = r"path of the .csv file"

# import the .csv file into a pandas DataFrame
df = pd.read_csv(url, sep = ';', thousands = ',')

# defining the array containing the states present in the study
states = np.array(df['state'].drop_duplicates())[:40]

#extracting the total cases for each day and each country
overall_cases = []
for state in states:
    tot_cases = []
    for i in range(len(df['state'])):
        if df['state'][i] == state:
            tot_cases.append(df['tot_cases'][i])
    overall_cases.append(tot_cases[:30])

data = pd.DataFrame(overall_cases).T
data.columns = states

#Plotting
fig = plt.figure()
ax = fig.subplots()
ax = sns.heatmap(data, annot = True, fmt="d", linewidths=0, cmap = 'viridis', xticklabels = True)
ax.invert_yaxis()
ax.set_xlabel('States')
ax.set_ylabel('Day n°')
plt.show()

Подробнее В нашем полном руководстве Finxter: Создание красивых тепломаперов с морским

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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

Оригинал: “https://blog.finxter.com/matplotlib-full-guide/”