1. 用户的 data 坐标系

  1. 当调用ax.set_xlimit(x_min,x_max)以及ax.set_ylimit(y_min,y_max)时,即建立起了用户data坐标系。左下角坐标为(x_min,y_min),右上角坐标为(x_max,y_max)

    有时候你可能并没有显式调用.set_xlimit()以及.set_ylimit()。其实matplotlib会隐式调用它们来设置坐标轴的数据范围。

    1. import matplotlib.pyplot as plt
    2. fig = plt.figure()
    3. ax = fig.add_subplot(111)
    4. ax.set_xlim(0, 10)
    5. ax.set_ylim(-1, 1)
    6. type(ax.transData)
    7. ax.transData.transform((5, 0))
  2. 你可以调用ax.transData返回data坐标系的坐标转换对象。对该坐标转换对象调用.transform(point)方法会返回pointdisplay坐标系下的坐标。其中point是点在data坐标系下的坐标(x,y)。你也可以给.transform()方法一次传入多个点的坐标,此时输出也是对应于display坐标系下的一系列坐标。

  3. 你可以对ax.trandData返回的坐标转换对象调用.inverted()方法。该方法返回的是一个坐标逆转换对象。对该坐标逆转换对象调用.transform(point)方法会返回pointdata坐标系下的坐标。其中point是点在display坐标系下的坐标(x,y)。你也可以给.transform()方法一次传入多个点的坐标,此时输出也是对应于data坐标系下的一系列坐标。

  4. 当你调用了ax.set_xlim()或者ax.set_ylim()时,坐标转换对象会实时更新。

    用户的`data`坐标系