【问题标题】:Why are my plot values incorrect?为什么我的绘图值不正确?
【发布时间】:2019-02-03 04:00:15
【问题描述】:

所以,我目前正在绘制一些通过 csv 文件导入到我的代码中的数据。

我的 y 值是 NO2 列 我的 x 值是 Julian Dates

我的数据如下:

如您所见,儒略日期总是按您的预期增加。如您所料,NO2 数据上下波动。但是,当我绘制它时,会发生这种情况:

我想知道如何让我的 NO2 数据正确分布?

我的代码如下:

filein='filein'
fileout='fileout'

import csv
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

headers = ['JulianDate','NO2']

with open(filein, 'r') as sat: ##opens data
    with open(fileout, 'w') as outfile: ##Opens file to write csv data to
        for line in sat:
            if " Julian date" in line:
                writer=csv.writer(outfile)#Specifies to write this to outfile
                writer.writerow(headers)#Writes Headers
                elif "2004" in line: #specifies the year of data I want to look at
                    line=line.split() #Eliminates unnecessary spacing in output
                    writer=csv.writer(outfile)
                    writer.writerow(line)#writes to output file

df=pd.read_csv(output,names=headers,delimiter=',')
plt.scatter(x=df['JulianDate'],y=df['NO2'])

【问题讨论】:

  • JulianDate 是否与您的数据概览中的 MJD2000 对应?
  • 是的,确实如此! MJD2000 = 朱利安日期。
  • 数据可能是字符串
  • 你能放大坐标轴看看它们有什么标签吗?由于实现看起来不错,数据本身存在问题
  • @Cut7er 可悲的是,我想这也是数据:/ 当你放大时,即使有明显的点,也没有出现。我将尝试深入了解为什么我可以“打印()”数据,它看起来不错,但是当我绘制它时,事情就出现了。

标签: python pandas csv matplotlib


【解决方案1】:

必须将日期转换为日期时间格式才能获得整洁的绘图。我建议使用转换后的日期创建一个日期时间索引,并使用 pandas 内置的绘图方法。

df.index = pd.to_datetime(df['JulianDate'].astype('int'), format='%y%j')
df['N02'].plot()

注意现在我找不到将儒略十进制数转换为日期时间格式的正确方法。因此,使用上面的代码,您将丢失十进制数字中包含的有关一天中的时间的信息。

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2019-12-16
    相关资源
    最近更新 更多