Всем доброй ночи, гайс! Надеюсь, вы хорошо проведете свои выходные 😋
🔗 Для того, чтобы изображать любые линейные графики, диаграммы, и даже трехмерную визуализацию, придумали 🟰Matplotlib🟰
⚙️ Импорт библиотеки и все такое мы уже с вам знаем:
from matplotlib import pyplot as plt
# or
import matplotlib.pyplot as plt
🧑💻 Сейчас пробежим по основным функциям, а завтра напишем полноценный код:
0️⃣ plot()
▫️Строит линейный график (line plot)
▫️Принимает массивы значений для осей X и Y
🔗 Пример кода:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.plot(x, y, label="График 1", color="blue", linestyle="--")
plt.legend()
plt.show()
1️⃣ scatter()
▫️Строит точечную диаграмму
🔗 Пример кода:
x = [5, 7, 8, 7, 2]
y = [99, 86, 87, 88, 100]
plt.scatter(x, y, color="red", marker="o")
plt.show()
2️⃣ bar()
▫️Создаёт столбчатую диаграмму
🔗 Пример кода:
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 1, 8]
plt.bar(categories, values, color="green")
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1👍1🤯1🤓1
from matplotlib import pyplot as plt
x = [1, 2, 3, 4] # координаты по оси X
y = [10, 20, 25, 30] # координаты по оси Y
plt.plot(x, y, label = 'График 1', color = 'blue', linestyle = '--') # Строит линейный график на основе данных
plt.legend() # Добавляет легенду на график
plt.show() # Показывает график в новом окне
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🤯1
from matplotlib import pyplot as plt
x = [1, 2, 3, 4, 5, 6]
y = [11 ,22, 33, 44, 55, 66]
plt.scatter(x, y, color = 'red', label = 'График 2', marker = 'o') # создаёт точечную диаграмму, цвет точек, форму маркера
plt.legend()
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🤯1
from matplotlib import pyplot as plt
categories = ['A', 'B', 'C', 'D', 'E']
values = [4, 7, 1, 9, 12]
plt.bar(categories, values, label = 'График 3', color = 'green')
plt.legend()
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🤯1
from matplotlib import pyplot as plt
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels = labels, autopct = '44%%', startangle = 140)
plt.legend()
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🤯1
from matplotlib import pyplot as plt
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
plt.hist(data, bins = 5, color = 'blue', alpha = 0.7)
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🤯1
🧑💻 Йоу воссап, друзья, потихонечку помаленечку мы продвигаемся. Но нам нельзя никак останавливаться, поэтому предлагаю заняться чем то серьезным, а именно — векторы, матрицы и вся эта сложная штука...
🔗 Итак, начнем конечно же с векторов, базу знать нам необходимо...
▫️Че такое этот ваш вектор? Это объект (математический), который имеет длину (модуль, мера его размера) и направление (ориентация в пространстве)
v = [u₁, u₂ u₃] — вот пример вектора в трехмерном пространстве
Как найти его длину (модуль) ?
|v| = √u²₁, u²₂ u²₃ + ... + u²ₓ
Например:
Если v = [3, 4], то v = √9 + 16 = 5 (я надеюсь, вы поняли че мы сделали, просто в формулу вставьте числа)
Для векторов функция numpy.linalg.norm вычисляет длину (или величину) вектора. По умолчанию она использует Евклидову норму (L2-норма):
import numpy as np
vp = np.array([3, 4])
length = np.linalg.norm(vp)
print(length)
# 5.0
🔗 Касаемо Евклидовой нормы, мы рассмотрим это дальше, пока не надо париться...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2🤯1🤓1
🔗 Для начала, что такое норма?
Норма — это способ измерить "размер", "длину" или "величину" объекта. Для векторов норма показывает их длину в пространстве, а Для матриц норма измеряет их размер
В коде я указывал функцию 🟰
np.linalg.norm🟰 — из библиотеки NumPy вычисляет норму вектора или матрицы. На фотаче представлены как раз основные нормы, которые мы сейчас и рассмотрим:1️⃣ Максимальная норма (ord = ∞)
Наибольшее значение суммы абсолютных значений строки.
A = np.array([[1, -2], [3, -4]])
print(np.linalg.norm(A, ord=np.inf))
# Вывод: 7 (максимальная сумма по строкам)
🔗 Кароч, че это значит: есть матрица A = [1 -2] и нижняя строка [3 -4], то для первой строки сумма модуля будет 3, для второй 7 → максимальная сумма (среди модулей) равна 7
Кстати, 🟰
np.inf🟰 это представление бесконечности (от infinity)Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2❤1
2️⃣ Евклидова норма (по умолчанию, ord = 2)
🔗 Это стандартная длина вектора или "величина" матрицы, мы разбирали ее → тут
import numpy as np
v = np.array([3, 4])
print(np.linalg.norm(v, ord=2))
# Вывод: 5.0 (гипотенуза треугольника 3-4-5)
▫️Прикол в том, что код будет выводить такой же результат — 5.0
🔗 Что делает ord=2? Кароч, ord=2 говорит функции 🟰
np.linalg.norm🟰, что мы хотим найти L2-норму (она по умолчанию стоит. но по-хорошему ее надо указывать для точности). 🔗 |v| = √u²₁, u²₂ u²₃ + ... + u²ₓ — По сути, это стандартная длина вектора в пространстве. Если представить вектор [3,4] как точку в 2D-пространстве, его длина — это расстояние от начала координат (0,0) до точки (3,4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1❤🔥1🤯1
3️⃣ Манхэттенская норма (ord = 1) (L1-норма)
|x|₁ = |x₁| + |x₂| + ... + |xₙ| — для векторов
🔗 Для матриц:
A = np.array([[1, -2], [3, -4]])
print(np.linalg.norm(A, ord = 1))
# Вывод: 6.0 (максимальная сумма по столбцу)
▫️Кароч, че тут происходит: функция вычисляет сумму абсолютных значений каждого столбца и возвращает максимальную сумму (Первый столбец — [1, 3] → складываем и получаем 4, второй столбец — [−2,−4] → складываем модули и получаем 6 → Максимальная сумма — 6
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2❤1🤯1
4️⃣ Frobenius-норма (ord='fro', по умолчанию для матриц)
🧑💻 Frobenius-норма используется для матриц и вычисляется как корень из суммы квадратов всех элементов матрицы. Она является обобщением Евклидовой нормы для векторов. (Опять же, формулу можете почекать на главной картинке)
⚙️ Итак, поговорим немного о формуле:
A — матрица,
aᵢⱼ — элемент матрицы A в строке i и столбце j.
▫️Теперь пример:
🔗 Возьмем матрицу с этого примера → матрица A = [1 -2] — верхняя строка и нижняя строка [3 -4] → дальше вычисляем квадраты всех элементов матрицы и складываем → получаем 30 → корень из 30 приблизительно 5.477
▫️Код:
import numpy as np
a = np.array([[1, -2], [3, -4]])
fnorm = np.linalg.norm(a, ord = 'fro')
print(fnorm)
Если не указывать ord для матрицы, Frobenius-норма используется по умолчанию.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1❤🔥1🤯1🤓1
Media is too big
VIEW IN TELEGRAM
🧑💻1️⃣ Скалярное произведение векторов
Скалярное произведение двух векторов a и b — это сумма произведений их соответствующих компонентов
🔗 a⋅b=∣a∣∣b∣cos(θ)
🔗 ∣a∣ и ∣b∣ — длины векторов, θ — угол между ними
Если угол равен 90°, то скалярное произведение равно 0, так как cos(90°) = 0
Теперь напишем пример на Python:
import numpy as np
a = ([1, 2, 3])
b = ([4, 5, 6])
dot_product = np.dot(a, b)
print(dot_product)
Dot Product — это операция между двумя векторами, которая возвращает одно число (скаляр). Она вычисляется как сумма произведений соответствующих компонент векторов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2❤1🤯1
2️⃣🔗 Что касаемо векторного произведения?
a × b = i ⋅ (a 2b 3−a 3b 2) − j ⋅ (a 1b 3−a 3b 1) + k ⋅ (a 1b 2−a 2b 1)
import numpy as np
a = ([1, 2, 3])
b = ([4, 5, 6])
cross_product = np.cross(a, b)
print(cross_product)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1❤1🥰1
Строим график синусоиды
0️⃣ Импортируем две базовые библиотеки:
import matplotlib.pyplot as plt
import numpy as np
1️⃣ Создание фигуры (с помощью Figure)
fig = plt.figure(figsize=(5, 4))
🔗 Итак, 🟰
plt.figure🟰 создаёт новый объект, на которой будут отображаться графики. А что касаемо параметров (5, 4) ? Параметры отвечают за размер фигуры: первая цифра (5) — это ширина фигуры
вторая цифра (4) — это высота фигуры
Итак, создаётся фигура размером 5x4 дюйма
2️⃣ Добавляем оси
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
▫️Этот метод добавляет оси на заданную фигур.
▫️[0.1, 0.1, 0.8, 0.8] — Список, который задаёт положение и размер области для осей внутри фигуры в виде четырёх чисел и вот как это выглядит:
0.1 — отступ от левой границы фигуры.
0.1 — отступ от нижней границы фигуры.
0.8 — ширина осей относительно ширины фигуры.
0.8 — высота осей относительно высоты фигуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2🥰1🤓1
Это для понимания того, как работают параметры в этой строке:
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
🔽🔽🔽
fig = plt.figure(figsize=(8, 8))
# График 1: минимальные отступы (основной размер)
ax1 = fig.add_axes([0.0, 0.0, 0.8, 0.8]) # График занимает большую часть фигуры, отступов нет
ax1.set_title('Отступы: [0.0, 0.0, 0.8, 0.8]')
# График 2: отступы увеличены
ax2 = fig.add_axes([0.3, 0.3, 0.5, 0.5]) # График с увеличенными отступами
ax2.set_title('Отступы: [1.3, 1.3, 0.5, 0.5]')
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1❤🔥1👍1🤯1
3️⃣ А что дальше? Дальше мы создаем массив значений x от 0 до 2π с шагом 0.01.
xx = np.arange(0, 2 * np.pi, 0.01) #значения, по которым будут вычисляться точки на оси x
2π соответствует одному полному циклу синусоиды (360 градусов в радианах)
4️⃣ Дальше нам нужна строка, которая вычислит значения у для каждого x (естественно, применяем функцию sin(x), у нас синусоида, как никак 🙂)
yy = np.sin(xx)
▫️Функция np.sin в библиотеке NumPy позволяет вычислить синус для массива значений x, таких как np.arange(0, 2 * np.pi, 0.01)
▫️Она возвращает массив значений
y, который соответствует значениям синуса для каждого x
5️⃣ Строим график y=sin(x) (линию) с подписью label='y = sin(x)':
ax.plot(xx, yy, label='y = sin(x)')
6️⃣
ax.set_title('График синусоиды') # заголовок графика
ax.set_xlabel('x (угол в радианах)') # подпись оси x
ax.set_ylabel('y (значение синуса)') # подпись оси y
ax.legend() # Отображает легенду, которая берет текст из label (пункт 5)
plt.show() # сам графикPlease open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1👍1🤓1👨💻1
🧑💻 Весь код:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(5, 4))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
xx = np.arange(0, 2 * np.pi, 0.01) # От 0 до 2π с шагом 0.01
yy = np.sin(xx)
ax.plot(xx, yy, label='y = sin(x)')
ax.set_title('График синусоиды')
ax.set_xlabel('x (угол в радианах)')
ax.set_ylabel('y (значение синуса)')
ax.legend()
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2🤯1🤓1
Завтра выложу очень интересный пост, гайсы. Понимаю, что их сейчас нет, у меня сессия идет жесточайшая, но я надеюсь, что, вы, мои любимые подписичники, поймете меня 🧑💻 🙏
❤2🥰1
Допустим, есть у нас набор точек:
{x₁ = 50, y₁ = 10
{x₂ = 60, y₂ = 30
{x₃ = 70, y₃ = 40
{x₄ = 100, y₄ = 50
x — площадь дома, y — цена дома
Для начала, делаем визуал наших точек:
from matplotlib import pyplot as plt #Иморт библиотек
plt.scatter([50, 60, 70, 100], [10, 30, 40, 50], 50, 'g', 'o', alpha = 0.8) #В ппервых двух квадратных скобках это наши координаты x и y. Число 50 - это размер точек, g - green (цвет), o - Форма точек (круг). alpha = 0.8 - Прозрачность точек
plt.show()
Получившийся график в комментах
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2❤🔥1🥰1
import numpy as np
X = np.array([[1, 50], [1, 60], [1, 70], [1, 100]])
X
array([[ 1, 50],
[ 1, 60],
[ 1, 70],
[ 1, 100]])
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2❤🔥1🤯1