向直方图添加图例/图例

wil*_*yth 3 python matplotlib

我无法向使用 matplotlib.pyplot 创建的直方图添加图例。希望得到一些帮助/建议。

下面的数据集是垃圾数据,但却是这种情况的准确示例,两个数据集都在同一数据框中,由列上的过滤器分隔。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math
import pyodbc
import re


data = [{ 'uid':1,'Region':'nebraska', 'metric1':24},
        { 'uid':2,'Region':'nebraska', 'metric1':12},
        { 'uid':3,'Region':'nebraska', 'metric1':23},
        { 'uid':4,'Region':'nebraska', 'metric1':12},
        { 'uid':1,'Region':'nebraska', 'metric1':24},
        { 'uid':2,'Region':'nebraska', 'metric1':12},
        { 'uid':3,'Region':'nebraska', 'metric1':23},
        { 'uid':4,'Region':'nebraska', 'metric1':12},
        { 'uid':1,'Region':'nebraska', 'metric1':24},
        { 'uid':2,'Region':'nebraska', 'metric1':12},
        { 'uid':3,'Region':'nebraska', 'metric1':23},
        { 'uid':4,'Region':'nebraska', 'metric1':12},
        { 'uid':1,'Region':'nebraska', 'metric1':24},
        { 'uid':2,'Region':'nebraska', 'metric1':12},
        { 'uid':3,'Region':'nebraska', 'metric1':23},
        { 'uid':4,'Region':'nebraska', 'metric1':12},
        { 'uid':29,'Region':'colorado', 'metric1':14},
        { 'uid':30,'Region':'colorado', 'metric1':45},
        { 'uid':30,'Region':'colorado', 'metric1':45},
        { 'uid':30,'Region':'colorado', 'metric1':45},
        { 'uid':31,'Region':'colorado', 'metric1':65},
        { 'uid':32,'Region':'colorado', 'metric1':50}
        ]

testDataset = pd.DataFrame(data)

b = np.arange(0,100, 50)


plt.hist(testDataset[testDataset['Region'] == 'nebraska']['metric1'], b,color = 'red')   
plt.xticks(rotation=90)
plt.xticks(np.arange(0, 100, 10))
plt.yticks(np.arange(0, 100, 10))
plt.grid(zorder=0)


plt.hist(testDataset[testDataset['Region'] == 'colorado']['metric1'], b,color = 'blue')   

plt.show()
Run Code Online (Sandbox Code Playgroud)

cht*_*mon 5

只需在您的调用中添加一个label参数即可hist

plt.hist(testDataset[testDataset['Region'] == 'nebraska']['metric1'], b,
         color = 'red', label='Nebraska')
plt.hist(testDataset[testDataset['Region'] == 'colorado']['metric1'], b,
         color = 'blue', label='Colorado')   
Run Code Online (Sandbox Code Playgroud)

plt.legend()并在之前打电话plt.show()