Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2016 14:39:31

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

Уважаемые коллеги, подскажите, как можно решить задачу.
Суть поставленной задачи, через вершины графика построить прямые бесконечные линии до следующих вершин. Может можно как-то через 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()

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


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

Офлайн

#2 Фев. 8, 2016 05:15:12

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

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

В общем задание не понятное. НУ а так да, реально.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Фев. 8, 2016 13:47:46

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

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

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

Не подскажите, как это сделать?
Спасибо, что уделили моему вопросу Своё время.

Офлайн

#4 Фев. 8, 2016 15:34:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

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



Офлайн

#5 Фев. 8, 2016 15:41:07

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

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

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

Так стало понятнее?

Офлайн

#6 Фев. 8, 2016 15:50:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

paraman
Так стало понятнее?
Гораздо!



Офлайн

#7 Фев. 9, 2016 02:53:19

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

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 сделать, но понадобиться еще некоторое время что бы в его “въехать”



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Фев. 9, 2016 02:54:37)

Офлайн

#8 Фев. 9, 2016 06:51:38

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Как найти вершины графика и провести через них линию?

Спасибо. Я уже решил задачу.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version