matplotlib pyplot通过重叠比较两个条形图

时间:2018-05-15 14:15:16

标签: python matplotlib bar-chart

我有两个长度为3500的向量(r1和r2),我想比较它们。问题是,当我使用plt.bar时,我会得到两种不同的r2图。这怎么可能?

enter image description here

有谁能告诉我我的代码有什么问题?

def compare_representations(r1, r1title, r2, r2title, image, k):
    ka = np.asarray(range(k)) #ka =3500

    plt.figure(figsize=(13,10))
    #histogram Query
    hiq = plt.subplot(2,2,1)
    hiq.set_title("Histogram for " + r1title)
    hiq.set_xlabel("Visual words")
    hiq.set_ylabel("Frequency")
    #hist1 = plt.plot(r1, color='orangered')
    hist1 = plt.bar(ka,r1,width=1.0,color="orangered")


    #histogram Image
    his = plt.subplot(2,2,2)
    his.set_title("Histogram for "+ r2title)
    his.set_xlabel("Visual words")
    his.set_ylabel("Frequency")
    #hist2 = plt.plot(r2, color='mediumslateblue')
    hist2 = plt.bar(ka,r2,width=1.0,color='mediumslateblue')


    #histograms compared
    comp = plt.subplot(2,2,3)
    comp.set_title("Compare Histograms: ")
    comp.set_xlabel("Visual words")
    comp.set_ylabel("Frequency")
    #plt.plot(r1, color ='orangered')
    #plt.plot(r2, color = 'mediumslateblue')
    plt.bar(ka,r1,width=1.0,color ='orangered')
    plt.bar(ka,r2,width=1.0,color = 'mediumslateblue')


    #plot founded image
    ax = plt.subplot(2,2,4)
    ax.grid(False)
    img = mpimg.imread(image, format='jpeg')
    # Turn off tick labels and show just name of founded image
    ax.set_yticklabels([])
    ax.set_xticklabels([])
    ax.set_xlabel(os.path.basename(image))

    imgplot = plt.imshow(img)

    plt.show()

    return(hist1, hist2, imgplot)

2 个答案:

答案 0 :(得分:0)

我找不到关于plt.bar()的解决方案,我不认为这是适合您数据的情节类型。我建议plt.plot()plt.scatter()使用alpha=0.5进行比较。

这是一个例子(请注意我删除了图像部分

def compare_representations(r1, r1title, r2, r2title, k):
    ka = np.asarray(range(k)) #ka =3500


    #histogram Query
    hiq = plt.subplot(2,2,1)
    hiq.set_ylim([0, 0.15])
    hiq.set_title("Histogram for " + r1title)
    hiq.set_xlabel("Visual words")
    hiq.set_ylabel("Frequency")
    hist1 = plt.plot(ka,r1,color="orangered")


    #histogram Image
    his = plt.subplot(2,2,2)
    his.set_ylim([0, 0.15])
    his.set_title("Histogram for "+ r2title)
    his.set_xlabel("Visual words")
    his.set_ylabel("Frequency")
    hist2 = plt.plot(ka,r2,color='mediumslateblue')


    #histograms compared
    plt.figure(figsize=(13,10))
    plt.ylim([0,0.15])
    plt.title("Compare Histograms: ")
    plt.xlabel("Visual words")
    plt.ylabel("Frequency")
    plt.plot(ka,r1,color="orangered", alpha=0.5)
    plt.plot(ka,r2,color='mediumslateblue', alpha=0.5)
    plt.show()


    return(hist1, hist2)

答案 1 :(得分:0)

@Furin ...这不是答案:我只是将其放在此处,作为与您联系的有关我的问题的一种方式,您对本月早些时候表现出了兴趣。 This one,有关Python和密码缓存。

我已经添加了a "stub" of an answer ...如果您有时间和偏好(我现在真的没有时间),可以对此进行调查...

如果您在此答案中添加“看到此”之类的评论,我将其删除。