我试图绘制一些数据,并希望在xtick上打印真实的时间戳,而不是数字(从time = np.linspace(0,(numOfSamples)/60,numOfSamples)
生成)。在
以下是我的数据文件示例:
01/01/2015 10:44:10.438,65,8.1
01/01/2015 10:44:11.438,65,8.1
01/01/2015 10:44:12.438,65,7.3
01/01/2015 10:44:13.438,65,7.3
01/01/2015 10:44:14.438,70,6.6
01/01/2015 10:44:15.438,73,6.6
01/01/2015 10:44:16.438,74,6.9
01/01/2015 10:44:17.438,73,6.9
01/01/2015 10:44:18.438,68,7.2
我在文件中有大约2754个时间戳(每秒)和数据点,每个时间戳对应于每个数据点。所以第一列是我希望在我的x轴上显示的内容,第二列和第三列是我绘制的数据点。在
首先我试过:
^{pr2}$然而,这将绘制所有2754个时间戳,而不是与绘图上正确位置对应的8-10个时间戳(不指定xtick,绘图上大约有8-10个刻度)。在
我也尝试过使用ax.set_xticklabels(time_label)
,但是这只使用前几个时间戳来替换绘图上现有的8-10个刻度。在
这是原始滴答声(使用时间)
我从下面的答案中得到以下错误:
draw(artist, renderer, *args, **kwargs)
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\axis.py", line 1091, in draw
ticks_to_draw = self._update_ticks(renderer)
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\axis.py", line 945, in _update_ticks
tick_tups = [t for t in self.iter_ticks()]
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\axis.py", line 889, in iter_ticks
majorLocs = self.major.locator()
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\dates.py", line 802, in __call__
self.refresh()
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\dates.py", line 819, in refresh
dmin, dmax = self.viewlim_to_dt()
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\dates.py", line 564, in viewlim_to_dt
return num2date(vmin, self.tz), num2date(vmax, self.tz)
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\dates.py", line 311, in num2date
return _from_ordinalf(x, tz)
File "C:\Users\aad0002\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\dates.py", line 214, in _from_ordinalf
dt = datetime.datetime.fromordinal(ix)
ValueError: ordinal must be >= 1
我定义图形并动态地添加子窗口(基于传递给脚本的参数数量)。例如:
fig = plt.figure(figsize=(12, 10))
fig.suptitle(plot_title + ' -- ' + time_title, fontsize=18, **font)
fig.subplots_adjust(bottom=-1.6)
ax1 = fig.add_subplot(611)
ax2 = fig.add_subplot(612)
ax3 = fig.add_subplot(613)
ax4 = fig.add_subplot(614)
ax5 = fig.add_subplot(615)
ax6 = fig.add_subplot(616)
我想最简单的方法是将x值字符串转换为datetime对象。在
这可以通过以下方式实现:
要调整xticks的位置和格式:
^{pr2}$您很可能需要调整x标记位置列表和xlabel格式以满足您的需要。在
相关问题 更多 >
编程相关推荐