我希望彩色圆点与图表底部保持恒定距离。 然而,正如您所看到的那样,它们会跳到整个地方,因为它们的y坐标以y值给出,并且y轴在每个图表中都不同。有没有办法从x轴以像素为单位定义y位置?无需借助%(图表的顶部 - 图表的底部)将是理想的。谢谢!
答案 0 :(得分:5)
您可以绘制轴坐标中的点而不是数据坐标。轴坐标范围从0到1(左下角到右上角)。
为了使用轴坐标,您需要为图的Axes.transAxes
参数提供transform
- 另请参阅transformation tutorial。
这是一个最小的例子:
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()
<小时/> 如果要在数据坐标中指定水平坐标,在轴坐标中指定垂直坐标,则可以使用blended transformation,
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()