Я использую Python 3 в Anaconda3 для графического интерфейса, где я создаю основной код с кодом функции для установки выходных данных в файле .ui.
На следующем рисунке показано дерево моего проекта: Вот детали того, что у меня есть для моего проекта
У меня есть данные из файла, показанного в следующемизображение: .txt файл
Я получил столбцы в списке, назвав их FR, HP и EF соответственно. Я отправил эту информацию в свою функцию наименьших квадратов, которая возвращает значения x и y с коэффициентами
Теперь я хочу построить данные с одним графиком из FR обработки и HP, возвращающих значения x иy-значения и мне нужно включить исходные данные FR и HP как разбросанные. Затем мне нужно включить другие входные данные от обработки FR и EF, которые также возвращают значения x и y из моей функции кубических наименьших квадратов, которая также отображает исходные данные.
По-видимому, я смог построить только FR и EF, поэтому мне нужна помощь в построении результатов FR и PH
Это код, который у меня есть:
def plot1(self, xvals, yvals, FR,HP):
self.figure.clf() # clear the figure every time that it runs again
ax = self.figure.add_subplot(111)
ax2 = ax.twinx()
ax.set_title('Pump Head and Efficiency Curves')
ax.plot(xvals, yvals, 'r-')
ax.plot(FR, HP, 'bx') # plotting the original data in blue exes
ax.set_xlabel('Mass Flow Rate [gpm]')
ax.set_ylabel('Head [ft]', color='g')
ax2.set_ylabel('Efficiency [%]', color='b')
ax.legend(['Head Curve Fit', 'Head Data'])
#this I am not sure
# ax2.plot(xvals, yvals, 'g-')
# ax2.plot(FR, EF, 'bo')
ax2.legend(['Efficiency Curve Fit', 'Efficiency Data'])
self.draw()
И этот код дает мне следующее: График из кода, который я написал
Цель кода - получить такой график: target plot
Вот также код, который я использовал для получения кубических наименьших квадратов со степенью = 3, которые возвращают xvals и yval с соответствующими коэффициентами:
def LeastSquaresData(x, y, power,npoints=500):
a = LeastSquares(x, y, power) # perform the least-squares fit
# calculate points for plotting
minx=min(x);maxx=max(x)
xvals = np.linspace(minx, maxx, npoints) # xvalues for plotting
yvals = np.zeros_like(xvals) # preloaded with zeros .. to start a sum!
#loop an create the yvals
for i in range(len(xvals)):
yvals[i] = Horner(xvals[i],a)
#next i
return xvals, yvals