如何将字符串标签添加到下图中显示的水平红线?我想添加类似" k = 305"到该行旁边的y轴标签。蓝点只是其他一些数据,值无关紧要。为了解决这个问题,您可以绘制任何类型的数据。我的问题是关于红线。
plt.plot((0,502),(305,305),'r-')
plt.title("ALS+REG")
答案 0 :(得分:5)
可以使用Axes.axhline(y)
绘制水平线
添加标签将使用Axes.text()
完成。棘手的一点是决定放置该文本的坐标。由于y坐标应该是绘制直线的数据坐标,但是标签的x坐标应该独立于数据(例如,允许不同的轴刻度),我们可以使用混合变换,其中x变换是ylabels的变换,y变换是数据坐标系。
import matplotlib.pyplot as plt
import matplotlib.transforms as transforms
import numpy as np; np.random.seed(42)
N = 120
x = np.random.rand(N)
y = np.abs(np.random.normal(size=N))*1000
mean= np.mean(y)
fig, ax=plt.subplots()
ax.plot(x,y, ls="", marker="o", markersize=2)
ax.axhline(y=mean, color="red")
trans = transforms.blended_transform_factory(
ax.get_yticklabels()[0].get_transform(), ax.transData)
ax.text(0,mean, "{:.0f}".format(mean), color="red", transform=trans,
ha="right", va="center")
plt.show()