如何在matplotlib.hlines中设置标签

时间:2017-04-11 14:02:38

标签: python python-3.x matplotlib

我试图在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'每行的轴。 取而代之的是我得到一个没有标签的情节,只有坐标(参见样本图)。是否可以将每行的标签放入图中?

enter image description here

1 个答案:

答案 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')

enter image description here

如果您想要特殊的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))

enter image description here