Неполадки выравнивания по оси X Matplotlib (домашнее задание) - PullRequest
1 голос
/ 11 февраля 2020

Как уже говорилось, у меня есть домашнее задание по основам класса Data Science. Я отфильтровываю башню с ошибочной информацией и строю данные о хорошей башне по амплитуде и времени.

Проблема связана с моей средней линией для моего графика. Предполагается, чтобы пробежать среднее значение моих очков. К сожалению, я не могу выровнять по моей оси X. Мой вывод выглядит следующим образом: Output Graph

Я пробовал решение, которое я нашел при переполнении стека, но лучшее, что я мог придумать, это средняя линия для всего графика, используя : mplot.plot(np.unique(columnOneF),np.poly1d(np.polyfit(columnOneF,columnTwoF,1))(np.unique(columnOneF)))

import csv
import matplotlib.pyplot as mplot
import numpy as np

File = open("WhiteSwordfish_ch1.csv")
csv_file = csv.reader(File)

columnOneF = []
columnTwoF = []
columnThreeF = []
MeanAmp = []
Freq = []
TempFreq = []
last = 0

for row in csv_file:  # Loop graps all the rows out of the CSV File stores them by column in List
    if float(row[2]) == 21.312057:  # If statement check if the frequency if from the good tower if
        Freq.append(row)  # so it then grabs THE WHOLE ROW and stores in a a List

for row in Freq:  # Program loops through only the good tower's data and sorts it into
    columnOneF.append(float(row[0]))  # Seperate list by type
    columnTwoF.append(float(row[1]))
    columnThreeF.append(float(row[2]))




# Mean Line Calculation
for i in Freq:
    current = float(i[0])
    if current == last:
        TempFreq.append(float(i[1]))
    else:
        last = current
        MeanAmp.append(np.mean(TempFreq))
        # MeanAmp.insert(int(current), np.mean(TempFreq))
        TempFreq = []
print(MeanAmp)
print(columnOneF)

# Graph One (Filter Data)
# ****************************************************************************
mplot.title("Filtered Data")
mplot.xlabel("Timing")
mplot.ylabel("Amplitude")
mplot.axis([-100, 800, -1.5, 1.5])
mplot.scatter(columnOneF, columnTwoF, color="red")  # Clean Data POINTS
mplot.plot(MeanAmp, color="blue", linestyle="-")  # Line
# mplot.plot(np.unique(columnOneF),np.poly1d(np.polyfit(columnOneF,columnTwoF,1))(np.unique(columnOneF)))
mplot.show()  # Displays both graphs

1 Ответ

1 голос
/ 11 февраля 2020

Вы передали только MeanAmp в функцию plot(), которая интерпретируется как

plot(y) # plot y с использованием x в качестве массива индекса 0..N-1

Источник

Если вы предоставите x-кординаты, как и для функции scatter(), линии будут выровнены:

mplot.plot(columnOneF, MeanAmp, color="blue", linestyle="-")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...