在直方图中添加键/图例

时间:2018-03-08 17:04:52

标签: 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()

2 个答案:

答案 0 :(得分:3)

只需在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')   

并在plt.legend()之前致电plt.show()

答案 1 :(得分:0)

我相信你只是在寻找plt.legend()

例如:

plt.legend(['Red', 'Blue'])