Как построить и получить координаты двух пересекающихся линий на графике? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть программа Python, которая на данный момент просто строит две линии. Я хочу, чтобы это выглядело как на картинке под первой картинкой, но сейчас это выглядит так.

Изображение графика без точек пересечения

Изображение графика с точками пересечения

Мой код для построения графика верен здесь:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('data.csv')
data = data.sort_values(['time'])
x = np.array(data['time'])
y = np.array(data['amount'])

plt.plot(x, y, 'bo-')

z = np.polyfit(x, y, 1)
p = np.poly1d(z)

x_dense = np.linspace(x[0], x[-1], 500)
y_dense = np.interp(x_dense, x, y)

mask = y_dense < p(x_dense)
x_masked = np.ma.array(x_dense, mask=mask)

plt.title("Trend Time")
plt.plot(x_dense, p(x_dense), 'g-', lw=0.5)
plt.plot(x_masked, p(x_masked), 'r--', lw=2.25)
plt.fill_between(x_dense, p(x_dense), y_dense, where=~mask, color='crimson', alpha=0.2)

plt.show()

Как я могу построить эти точки пересечения?

1 Ответ

0 голосов
/ 10 апреля 2020

Используйте разброс для построения точек на графике:

plt.scatter(x_masked, p(x_masked), lw=4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...