python-与seaborn并排绘制同一图上的条形图

时间:2018-07-12 12:39:33

标签: python seaborn graphing

我需要尝试在同一张图上绘制3条。我现在设置了2个数据框。我的第一个数据帧是根据一个here的JSON文件创建的。

我的第二个数据框是在以下代码中创建的:

def make_bar_graph():
    with open('filelocation.json') as json_file:
        data = json.load(json_file)
        df = pd.DataFrame([])
        for item in data["Results"]["Result"]:
            df = df.append(pd.DataFrame.from_dict(kpi for kpi in item["KPI"]))
        df.reset_index(level=0, inplace= True)
        df.rename(columns={0: 'id', 1: 'average', 2:'std. dev', 3: 'min', 4: 
                  'median', 5:'max'}, inplace=True)
        wanted_x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
        wanted_y = [5, 5, .500, .500, .500, 1, 1, 5, 5, .500, .500, .500, 1, 1]
        kpi = ['kpi1', 'kpi2', 'kpi3', 'kpi4', 'kpi5', 'kpi6', 'kpi7', 'kpi8', 'kpi9', 'kpi10', 'kpi11', 'kpi12',
           'kpi13', 'kpi14']
        df2 = pd.DataFrame(dict(x=wanted_x, y=wanted_y, kpi=kpi))
        sns.set()
        sns.set_context("talk")
        sns.axes_style("darkgrid")
        h = sns.barplot(x='id', y ='average', data=df.ix[0:13], label='Test 
                  on 4/30/2018', color='b')
        g = sns.barplot(x='id', y='average', data=df.ix[14:27], label='Test 
                  on 6/4/2018', color='r')
        k = sns.barplot("x", "y", data=df2, label='Desired Results', color='y')
        plt.legend()
        plt.xlabel('KPI number')
        plt.ylabel('Time(s)')
        plt.show()

这是我从中得到的图:

Graph1

我需要条形图彼此相邻,并用ID分隔(或KPI,ID号和KPI号是相同的东西)。我不确定如何重做数据框来做到这一点

0 个答案:

没有答案