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