我有两个长度为3500的向量(r1和r2),我想比较它们。问题是,当我使用plt.bar
时,我会得到两种不同的r2图。这怎么可能?
有谁能告诉我我的代码有什么问题?
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)
答案 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 ...如果您有时间和偏好(我现在真的没有时间),可以对此进行调查...
如果您在此答案中添加“看到此”之类的评论,我将其删除。