I have 4 data frames, which are df, df1, df2
and df3
.I have plotted these data into a scatter plot.
import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.figure() x1 = df['x'].loc['2020-01-01 00:00':'2020-01-01 00:59'] y1 = df1['y'] plt.scatter(x1, y1) x2 = df['x'].loc['2020-01-01 01:00':'2020-01-01 01:59'] y2 = df2['y'] plt.scatter(x2, y2) x3 = df['x'].loc['2020-01-01 02:00':'2020-01-01 02:59'] y3 = df3['y'] plt.scatter(x3, y3)
To plot trend line, I use the below code found in stackoverflow.
z = np.polyfit(x1, y1, 1) p = np.poly1d(z) plt.plot(x1,p(x1)) plt.show()
However, this only gives the trendline from df1
. I would like to plot a trendline which includes the data from df1, df2 and df3
.
Advertisement
Answer
It uses data only from df1
, as you send only the df1
to the code which plots your trend.
something like:
x_full = x1.append(x2).append(x3) y_full = y1.append(y2).append(y3) z = np.polyfit(x_full, y_full , 1) p = np.poly1d(z) plt.plot(x_full, p(x_full)) plt.show()
but please check documentation on how you append series, i.e. y1,y2,y3
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html