Переместить полученный график по осям в Python.
В Python у меня получается такой график (рис. 1) (использую модуль matplotlib.pyplot), получаются по формулам вот такие значения (рис. 2), Можно ли сместить этот график по осям, чтоб по Х и по У начальные значения были равны 0? PS. В MATLAB смотрел, там можно так сделать (рис. 3) (формулы, по которым ведётся расчёт, одни и те же). Можно ли в Python также?
Код:
import numpy as np
import matplotlib.pyplot as plt
class calculation_of_the_flight_of_the_projectile:
def __init__(self): # инициализация переменных
# Параметры снаряда
self.m = 6.3 # масса снаряда, кг
self.cal = 76 # калибр снаряда, мм
self.s = np.pi * ((self.cal / 1000) ** 2) # площадь поперечного сечения снаряда (мидель), м^2
self.cx = 2.382 # аэродинамический (баллистический) коэффициент
# Начальные значения
self.v0 = 680 # начальная скорость, м/с
self.theta = [4 * np.pi / 180] # угол бросания (возвышения орудия), °
self.g = 9.8 # ускорение свободного падения, м/с^2
self.pv = 1.225 # плотность воздуха (на уровне моря), кг/м^3
# Установка времени в качестве параметра "непрерывный"
self.t = np.linspace(0, 6.3, num=100)
for i in self.theta: # Расчёт угола траектории
self.x1 = []
self.y1 = []
for k in self.t: # Расчёт положения в любой момент времени
x = (2 * self.m * np.log(self.cx * k * self.pv * self.s * self.v0 * np.cos(i) + 2 * self.m) / (
self.cx * self.pv * self.s))
y = (-self.g * k ** 2 / 2 + 2 * self.m * np.log(
self.cx * k * self.pv * self.s * self.v0 * np.sin(i) + 2 * self.m) / (self.cx * self.pv * self.s))
self.x1.append(x)
self.y1.append(y)
print(f'значение по х = {x}; значение по y = {y}')
print(f'значение по Х начальное = {np.min(self.x1)}; значение по Х конечное = {np.max(self.x1)}')
print(f'значение по У начальное = {np.min(self.y1)}; значение по У конечное = {np.max(self.y1)}')
# Заголовок
plt.title('Полёт снаряда')
# Подпись осей
plt.xlabel('Расстояние, м')
plt.ylabel('Высота, м')
# Передача функции, по которой построится график
plt.plot(self.x1, self.y1)
plt.grid()
# Графическое изображение графика с сеткой
plt.show()