显示小数秒的 Matplotlib x 轴格式化程序——不会消失
Matplotlib x-axis formatter showing decimal seconds--won't go away
我对 Python 还是比较陌生,我在使用 matplotlib
的轴格式化程序时遇到了一些麻烦。
我的轴使用 datetime
值并显示小时、分钟、秒,然后是小数秒。我想摆脱小数点并能够在 x 轴或类似的东西上显示 Year/day/month Hour:minute:second 。首先,我只是尝试获取 Year/month/day。然而,DateFormatter
似乎没有任何效果。
我的大部分信息都来自这两个链接:format dates and Matplotlib instruction
我的简化代码如下:
tft
是 datetime
类型的列表列表(因此 tft[event_num]
),跨越数周,数据精确到秒。
import matplotlib.pyplot as plt
from Tkinter import *
from PIL import ImageTk, Image
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np
from images_to_list import images_to_list
from tkFileDialog import askopenfilename, askdirectory
import matplotlib.dates as mdates
extra = Tk()
extra.update()
class App:
def __init__(self, master):
self.event_num = 1
# Create a container
self.frame = Frame(master)
self.fig = Figure()
self.fig.set_size_inches(9,7)
self.ax = self.fig.add_subplot(111)
self.ax.fmt_xdata = mdates.DateFormatter('%Y-%m-%d')
self.fig.autofmt_xdate()
self.line, = self.ax.plot(tft[self.event_num],tf1[self.event_num],'.')
self.line2, = self.ax.plot(tft[self.event_num],tf2[self.event_num],'.')
self.ax.set_ylim([0,3.5])
self.canvas = FigureCanvasTkAgg(self.fig,master=self.frame)
self.canvas.get_tk_widget().grid(row=3,column=0,columnspan=4)
self.frame.grid(row=0,column=0)
app = App(extra)
extra.mainloop()
我认为您需要为 xticks
设置 major formatter:
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
请注意,fmt_xdata
似乎会更改 x 轴上鼠标悬停值的格式,而不是刻度本身。
我对 Python 还是比较陌生,我在使用 matplotlib
的轴格式化程序时遇到了一些麻烦。
我的轴使用 datetime
值并显示小时、分钟、秒,然后是小数秒。我想摆脱小数点并能够在 x 轴或类似的东西上显示 Year/day/month Hour:minute:second 。首先,我只是尝试获取 Year/month/day。然而,DateFormatter
似乎没有任何效果。
我的大部分信息都来自这两个链接:format dates and Matplotlib instruction
我的简化代码如下:
tft
是 datetime
类型的列表列表(因此 tft[event_num]
),跨越数周,数据精确到秒。
import matplotlib.pyplot as plt
from Tkinter import *
from PIL import ImageTk, Image
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np
from images_to_list import images_to_list
from tkFileDialog import askopenfilename, askdirectory
import matplotlib.dates as mdates
extra = Tk()
extra.update()
class App:
def __init__(self, master):
self.event_num = 1
# Create a container
self.frame = Frame(master)
self.fig = Figure()
self.fig.set_size_inches(9,7)
self.ax = self.fig.add_subplot(111)
self.ax.fmt_xdata = mdates.DateFormatter('%Y-%m-%d')
self.fig.autofmt_xdate()
self.line, = self.ax.plot(tft[self.event_num],tf1[self.event_num],'.')
self.line2, = self.ax.plot(tft[self.event_num],tf2[self.event_num],'.')
self.ax.set_ylim([0,3.5])
self.canvas = FigureCanvasTkAgg(self.fig,master=self.frame)
self.canvas.get_tk_widget().grid(row=3,column=0,columnspan=4)
self.frame.grid(row=0,column=0)
app = App(extra)
extra.mainloop()
我认为您需要为 xticks
设置 major formatter:
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
请注意,fmt_xdata
似乎会更改 x 轴上鼠标悬停值的格式,而不是刻度本身。