我是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中在移动鼠标时显示的数字。

python - matplotlib:set_major_formatter()和fmt_xdata有什么区别?-LMLPHP

如果希望GUI显示与轴不同的数字/字符串,则可以用您自己的自定义可调用方法替换ax.fmt_xdata方法。

关于python - matplotlib:set_major_formatter()和fmt_xdata有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54018788/

10-15 23:32