Найти - Пользователи
Полная версия: Как найти вершины графика и провести через них линию?
Начало » Python для новичков » Как найти вершины графика и провести через них линию?
1
paraman
Уважаемые коллеги, подскажите, как можно решить задачу.
Суть поставленной задачи, через вершины графика построить прямые бесконечные линии до следующих вершин. Может можно как-то через numpy или ещё через что.

Сам график:
import matplotlib.pyplot as plt
y = [19, 20, 18, 19, 17, 15, 13, 11, 12, 13, 11, 12, 13, 14, 15, 13, 14, 15, 13, 14, 15, 16, 17, 15, 13, 11, 9, 10, 11, 12, 13, 11, 12, 13, 14, 15, 16, 17, 18, 16, 14, 12, 13, 14, 15, 13, 11, 9, 7, 8, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 5, 6, 7, 8, 6, 7, 8, 9, 10, 8, 9, 7, 5, 6, 7, 8, 9, 7, 5, 6, 4, 5, 3, 1, 2, 0, 1, -1, 0, 1, 2, 1]
ax = plt.subplot(111)
plt.plot(y)
plt.show()

Нужно сделать примерно такое:


Это вообще реально? Спасибо, что уделили моему вопросу, своё время.

JOHN_16
сама формулировочка странная..бесконечные лини от вершин до вершин(каких?? как это). По картинке это не прямые, а лучи
сколько из вершины N проводить лучей и через какие вершины они должны проходить.

В общем задание не понятное. НУ а так да, реально.
paraman
Спасибо, что ответили.
Извините меня за каламбурность моего вопроса.
На самом деле задача сводиться к тому, чтобы с помощью shapely.geometry достроить прямую линую от точки А до оси Х(n,0) через точку Б, где n это координата Y=0

Как это сделать, не подскажите? Как пример:
Точки:
A = (1, 20)
B = (3, 19)

Не подскажите, как это сделать?
Спасибо, что уделили моему вопросу Своё время.
FishHook
Дорогой друг. От вас добиваются конкретики. Не бывает прямой линии от точки до точки. Не бывает прямой линии “от точки до оси”. Выражайтесь терминами элементарной геометрии за восьмой класс: прямая, луч, отрезок, плоскость. Для каждого из этих геометрических понятий есть определение.
paraman
FishHook
Дорогой друг. От вас добиваются конкретики. Не бывает прямой линии от точки до точки. Не бывает прямой линии “от точки до оси”. Выражайтесь терминами элементарной геометрии за восьмой класс: прямая, луч, отрезок, плоскость. Для каждого из этих геометрических понятий есть определение.

Спасибо, за критику моего вопроса.
Суть в том, чтобы продлить отрезок между точками А и В до оси Х.

Так стало понятнее?
FishHook
paraman
Так стало понятнее?
Гораздо!
JOHN_16
paraman
в таком случае не так уж это и сложно.
У вас даны две точки A(x1, y1) и B(x2, y2). Уравнение прямой в общем виде y=k*x+b. Подставляя в это уравнения координаты точек вы получите систему уравнений. Решая эту систему ( школьный курс алгебры 7 класс) относительно k и b вы получите уравнение прямой проходящей через заданные две точки. Для ваших точек это будет уравнение вида y=-0.5*x+20.5 . Так как вам надо найти точку пересечения этой прямой с осью Х, то подставляем в полученное ранее уравнение y=0 и находим оттуда Х, который равен 41, т.о. мы получили точку (41, 0). Далее строим отрезок, примерно так
pyplot.plot([1, 41], [20, 0])
По такому же принципу делается остальное.
Как это запрограммировать? Для начала нужно решить систему уравнений в общем виде, и все эти операции перенести на код. Ну а дальше уже как посчитаете нужным строить алгоритм вашей программы.
P.S. можно конечно и через sympy сделать, но понадобиться еще некоторое время что бы в его “въехать”
paraman
Спасибо. Я уже решил задачу.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB