Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python上,如何使绘图从最接近所需的时间开始_Python_Pandas_Datetime_Matplotlib - Fatal编程技术网

在Python上,如何使绘图从最接近所需的时间开始

在Python上,如何使绘图从最接近所需的时间开始,python,pandas,datetime,matplotlib,Python,Pandas,Datetime,Matplotlib,我想画一个图表,它在X轴上有UTC时间。我希望从一个特定的时间开始: 例如:如果我希望图表从6:00左右开始,到9:00结束,那么代码需要找到距离6:00最近的度量值,然后从那里开始,最后结束到距离9:00最近的度量值 现在,我必须通过选择绘图范围手动执行此操作(例如[1:1000]) 我使用的代码如下: import os from spacepy import pycdf import numpy as np import pandas as pd import matplotlib.pyp

我想画一个图表,它在X轴上有UTC时间。我希望从一个特定的时间开始:

例如:如果我希望图表从6:00左右开始,到9:00结束,那么代码需要找到距离6:00最近的度量值,然后从那里开始,最后结束到距离9:00最近的度量值

现在,我必须通过选择绘图范围手动执行此操作(例如[1:1000])

我使用的代码如下:

import os
from spacepy import pycdf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates
import pandas as pd 
import matplotlib.units as munits
from cycler import cycler




##In order to acquire the data download the file named (psp_fld_l2_mag_RTN_4_Sa_per_Cyc_20181003_v01.cdf  it is the secod file)  at this site                                    ##(http://research.ssl.berkeley.edu/data/psp/data/sci/fields/l2/mag_RTN_4_Sa_per_Cyc/2018/10/)
##then rename to 1003.cdf

我现在得到的结果是:


任何帮助都将不胜感激

@TrentonMcKinney数据链接如下(),您必须从该pagr下载名为()psp_fld_l2_mag_RTN_2018120106_v01.cdf)的第二个文件
data12 = pycdf.CDF('1003.cdf')






formats = ['%y',          # ticks are mostly years
           '%b',     # ticks are mostly months
           '%d',     # ticks are mostly days
           '%H:%M',  # hrs
           '%H:%M',  # min
           '%S.%f', ]  # secs
# these can be the same, except offset by one level....
zero_formats = [''] + formats[:-1]
# ...except for ticks that are mostly hours, then its nice to have month-day
zero_formats[3] = '%d-%b'
offset_formats = ['',
                  '%Y',
                  '%b %Y',
                  '%d %b %Y',
                  '%d %b %Y',
                  '%d %b %Y %H:%M', ]

converter = mdates.ConciseDateConverter(formats=formats,
                                 zero_formats=zero_formats,
                                 offset_formats=offset_formats)

munits.registry[np.datetime64] = converter
munits.registry[datetime.date] = converter
munits.registry[datetime.datetime] = converter

colors = ['black', 'r', 'g']


for numb in range(0,3,1):

 plt.plot(data12['epoch_mag_RTN_4_Sa_per_Cyc'][90000:111300],data12['psp_fld_l2_mag_RTN_4_Sa_per_Cyc'][90000:111300,numb],'--',label=data12['label_RTN'][numb],linewidth=0.3,color = colors[numb])



 
plt.legend(loc=3)

plt.xlabel('', fontsize=2)

plt.ylabel(data12['psp_fld_l2_mag_RTN_4_Sa_per_Cyc'].attrs['UNITS'])

plt.title(str(data12['psp_fld_l2_mag_RTN_4_Sa_per_Cyc'].attrs['CATDESC']))
    
    
plt.show()