matplotlib 添加具有平均线精确值的图例

bqucvtff  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(126)

我使用matplotlib库制作了一个图,它描绘了两个直方图和平均线。我认为如果我添加图例,图会更清晰。我想创建一个图例,说明这两条平均线的确切值。下面我附上我的代码和我生成的图以及显示我想要实现的效果的图片(这是我使用PowerPoint添加图例的图片):

def setPlot(data, mycolor, myalpha, mylinestyle):
    plt.style.use('ggplot')
    plt.rc('xtick',labelsize=12)
    plt.rc('ytick',labelsize=12)
    plt.xlabel("Incomes")
    plt.hist(data, bins=50, color= mycolor, alpha=myalpha)
    plt.axvline(numpy.mean(data), color=mycolor, linestyle=mylinestyle, linewidth=1.5)
    plt.show()

字符串
x1c 0d1x的数据



如有任何建议,我将不胜感激。

  • 解决方案--
    感谢wwiitom的建议,我能够实现我的想法的解决方案。我试图将这两个建议连接起来,这是我得到的:
def setPlot(data, mycolor, myalpha, mylinestyle):
    plt.style.use('ggplot')
    plt.rc('xtick',labelsize=12)
    plt.rc('ytick',labelsize=12)
    plt.xlabel("Incomes")
    plt.hist(data, bins=50, color= mycolor, alpha=myalpha)
    plt.axvline(numpy.mean(data), color=mycolor, linestyle=mylinestyle, linewidth=1.5, label=str(numpy.mean(data)))
    plt.legend(loc='upper right')
    plt.show()


我生成的图的例子是:

非常感谢您的帮助!

ig9co6j1

ig9co6j11#

你只需要给予axvline一个label,然后在绘制两个直方图后调用plt.legend。像这样:

import matplotlib.pyplot as plt
import numpy

def setPlot(data, mycolor, myalpha, mylinestyle):
    plt.style.use('ggplot')
    plt.rc('xtick',labelsize=12)
    plt.rc('ytick',labelsize=12)
    plt.xlabel("Incomes")
    plt.hist(data, bins=50, color= mycolor, alpha=myalpha)
    plt.axvline(numpy.mean(data), color=mycolor, linestyle=mylinestyle,
                linewidth=1.5,label='{:5.0f}'.format(numpy.mean(data)))

setPlot(numpy.random.rand(100)*30000.,'r',0.5,'--')
setPlot(numpy.random.rand(100)*20000.,'b',0.5,'-')

plt.legend(loc=0)

plt.savefig('myfig.png')

字符串


的数据

相关问题