Сглаживание линий графики Matplotlib - PullRequest
0 голосов
/ 06 мая 2018

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

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

Большое спасибо всем вам!

Francesco

1 Ответ

0 голосов
/ 09 мая 2018

Хорошо, Франческо, спасибо за загрузку изображения. Теперь давайте повеселимся с кодированием.

В качестве первого я предлагаю использовать функцию numpy, чтобы подогнать полиномиальную кривую определенной степени к набору значений: np.polyfit (). Помните о степени, которую вы установили, так как результаты могут широко меняться. Для получения дополнительной информации, пожалуйста, взгляните на эту документацию: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.polyfit.html

Затем, чтобы сгладить вашу кривую, вам нужно увеличить количество точек для рисования функции с помощью np.linspace () и использовать этот новый набор для применения функция np.poly1d () (она вычисляет координаты y на основе подгонки, которую вы сделали с polyfit).

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = [0, 50, 100, 150, 200, 250]

y = [-1, 0.8, 1.9, 1.6, 0, -3]

z = np.polyfit(x, y, 2)

p = np.poly1d(z)

xp = np.linspace(-2, 255)
plt.plot(x, y, '.', xp, p(xp), '-')
plt.show()

enter image description here

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