Построение двух графиков на графике с двумя осями Y - PullRequest
0 голосов
/ 03 ноября 2019

Я использую 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...