当前位置:  开发笔记 > 编程语言 > 正文

Matplotlib,用像素位置覆盖Y位置

如何解决《Matplotlib,用像素位置覆盖Y位置》经验,为你挑选了1个好方法。

我试图用Matpltlib绘制以下图表: 在此输入图像描述

我希望彩色圆点与图表底部保持恒定距离.然而,正如您所看到的那样,它们会跳到整个地方,因为它们的y坐标以y值给出,并且y轴在每个图表中都不同.有没有办法从x轴以像素为单位定义y位置?无需借助%(图表的顶部 - 图表的底部)将是理想的.谢谢!



1> ImportanceOf..:

您可以绘制轴坐标中的点而不是数据坐标.轴坐标范围从0到1(左下角到右上角).

为了使用轴坐标,您需要提供Axes.transAxes绘图的transform参数 - 另请参阅转换教程.

这是一个最小的例子:

import matplotlib.pyplot as plt

plt.plot([1,5,9], [456,894,347], "r-", 
         label="plot in data coordinates")
plt.plot([0.2,0.3,0.7], [0.2,0.2,0.5], "bo", 
         transform=plt.gca().transAxes, label="plot in axes coordinates")
plt.legend()
plt.show()


如果要在数据坐标中指定水平坐标,在轴坐标中指定垂直坐标,则可以使用混合变换,

matplotlib.transforms.blended_transform_factory(ax.transData, ax.transAxes)

这可以如下使用.

import matplotlib.pyplot as plt
import matplotlib.transforms as transforms

ax = plt.gca()
plt.plot([12,25,48], [456,894,347], "r-", 
         label="plot in data coordinates")
plt.plot([0.2,0.3,0.7], [0.2,0.2,0.5], "bo", 
         transform=ax.transAxes, label="plot in axes coordinates")
#blended tranformation:
trans = transforms.blended_transform_factory(ax.transData, ax.transAxes)
plt.plot([15,30,35], [0.75,0.25,0.5], "gs", markersize=12,
         transform=trans, label="plot x in data-,\ny in axes-coordinates")

plt.legend()
plt.show()

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有