【问题标题】:Trouble aligning x-axis Matplotlib (Homework)无法对齐 x 轴 Matplotlib(家庭作业)
【发布时间】:2020-02-10 21:53:13
【问题描述】:

如前所述,我有一份数据科学基础课程的家庭作业。我正在过滤出具有错误信息的塔,并按幅度和时间绘制好塔的数据。

问题在于我的图表的平均线。应该是通过我的平均分。不幸的是,我似乎无法在 X 轴上对齐。 我的输出如下所示:

我已经尝试过在堆栈溢出问题上找到的解决方案,但我能想到的最好方法是使用以下方法为整个图表画一条平均线: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

【问题讨论】:

    标签: python-3.x csv matplotlib data-science graphing


    【解决方案1】:

    您只将MeanAmp 传递给plot() 函数,它被解释为

    plot(y) # 绘制 y 使用 x 作为索引数组 0..N-1

    Source

    如果您提供 x 坐标,与 scatter() 函数相同,行将对齐:

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

    【讨论】:

    • 我试过了,但是 X 轴上的数据点数量与 Y 轴上的数据点数量不同,我抛出了一个错误。我认为目前我最好的选择是创建一个新列表,每次存储新的 Y 平均值时,存储相应的 X。
    • 确实,您需要长度相等的 x 和 y 数组。另外,我想您会期望平均线不会比散点图短。这意味着,如果 MeanAmp (y-coordinates) columnOneF (x-coordinates),有些事情是不对的,您可能需要重新考虑代码的逻辑。但这是作业的重点,也是一个完全不同的问题,与你原来关于平均线为什么这么短的问题无关。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2019-05-18
    • 2021-05-22
    • 1970-01-01
    • 2012-03-22
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多