我试图在matplotlib.hlines中为每一行添加标签:
from matplotlib import pyplot as plt
plt.hlines(y=1, xmin=1, xmax=4, label='somelabel1')
plt.hlines(y=2, xmin=2, xmax=5, label='somelabel2')
我需要一个带有两个水平线的图,标签上有' y'每行的轴。 取而代之的是我得到一个没有标签的情节,只有坐标(参见样本图)。是否可以将每行的标签放入图中?
答案 0 :(得分:5)
label
kwarg
用于指定legend
中显示的字符串,而不一定是该行本身。如果您希望标签出现在地块中,您将要使用text
对象
plt.hlines(y=1, xmin=1, xmax=4)
plt.text(4, 1, ' somelabel1', ha='left', va='center')
plt.hlines(y=2, xmin=2, xmax=5)
plt.text(2, 2, 'somelabel2 ', ha='right', va='center')
如果您想要特殊的y轴标签,可以使用自定义格式化程序。
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
plt.hlines(y=1, xmin=1, xmax=4)
plt.hlines(y=2, xmin=2, xmax=5)
def formatter(y, pos):
if y == 1:
return 'label1'
elif y == 2:
return 'label2'
else:
return y
plt.gca().yaxis.set_major_formatter(ticker.FuncFormatter(formatter))