Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib:添加具有精确平均值的图例_Python_Matplotlib_Plot - Fatal编程技术网

Python Matplotlib:添加具有精确平均值的图例

Python Matplotlib:添加具有精确平均值的图例,python,matplotlib,plot,Python,Matplotlib,Plot,我使用matplotlib库绘制了一个图,它描绘了两个直方图和平均线。我想如果我加上这个传说,情节会更清楚。我想创建一个图例,说明这两条平均线的确切值。下面我附上我的代码和生成的绘图以及显示我想要实现的目标的图片(这是我使用powerpoint添加图例的图片): 如有任何建议,我将不胜感激 -----------解决方案-------- 多亏了第二次世界大战和汤姆的伟大建议,我才得以实现我的想法的解决方案。我试图将这两个建议结合起来,我得到的结果如下: def setPlot(data, m

我使用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, label=str(numpy.mean(data)))
    plt.legend(loc='upper right')
    plt.show()
以及我生成的绘图示例:


非常感谢你的帮助

您只需给您
axvline
一个
标签
,然后在绘制两个直方图后调用
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')

你看过《二战》了吗?@wwii谢谢,我一定会查的,也许我会发现一些有用的东西!将
axvline
返回的
Line2D
对象分配给名称/变量。然后将其用作
图例的参数,如下所示。如果你找到了答案,请随意回答你自己的问题。@wwii非常感谢你的帮助!我已经学会了如何做到这一点,并改进了我的情节!谢谢你的回答,非常有帮助!
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')