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

标签 python matplotlib

我是 matplotlib 的新手。我从 here 复制了简单 pyqt-matplotlib 示例的代码,并更改了 class PlotCanvasplot() 以制作值(value)时间图表。

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

enter image description here

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

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

相关文章:

python - AWS Glue python 安装 - 找不到版本

python - Python 2 中 "//"和 "/"的区别

python - 将状态传递给函数与调用类实例上的方法

python - 为什么我的 Opencv 没有响应或没有执行任何操作?

python - matplotlib fatal error ft2

python - 如何在热图中设置中心颜色

python - 在 3D numpy 矩阵中绘制给定值的表面轮廓

python - 将 matplotlib 图表嵌入到 Qt/C++ 应用程序中

python 使用 __getitem__ 作为方法

Python Seaborn Distplot Y 值对应给定的 X 值