我是matplotlib的新手。然后,我从here复制了简单的pyqt-matplotlib示例的代码,然后将plot()
的class PlotCanvas
更改为值时间图表。
def plot(self):
dates = mdates.drange(dt.datetime(2010, 1, 1), dt.datetime(2010,1,2),
dt.timedelta(minutes=10))
y_val = [random.random() for i in range(len(dates))]
ax = self.figure.add_subplot(111)
ax.plot(dates, y_val)
use_major_formatter = True
if use_major_formatter:
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m-%d %H:%M'))
else:
ax.fmt_xdata = DateFormatter('%%m-%d %H:%M')
self.figure.autofmt_xdate()
ax.set_title('PyQt Matplotlib Example')
self.draw()
上面的代码需要这些导入:
import matplotlib.dates as mdates
import datetime as dt
from matplotlib.dates import DateFormatter
我尝试了
set_major_formatter()
和fmt_xdata
。而且我发现fmt_xdata
不起作用。但为什么?
set_major_formatter()和fmt_xdata有什么区别?
注意:在上面的代码中,我添加了
if
语句来测试两种方法。 最佳答案
ax.xaxis.set_major_formatter()
和ax.fmt_xdata
是完全不同的东西。
第一个ax.xaxis.set_major_formatter()
设置绘图中x轴的格式程序。这对于以要求的格式显示刻度标签很有用。
第二个ax.fmt_xdata
是获取数据坐标并将其格式化的函数。默认情况下,它将只返回与主格式化程序相同的格式。它在内部用于格式化GUI中在移动鼠标时显示的数字。
如果希望GUI显示与轴不同的数字/字符串,则可以用您自己的自定义可调用方法替换ax.fmt_xdata
方法。
关于python - matplotlib:set_major_formatter()和fmt_xdata有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54018788/