x = list(range(len(name_list))) #横坐标的名
width = 0.2 #直方图的柱宽
colors = ['b','g'] #直方图的颜色
plt.figure(figsize=(8,6)) #
plt.ylim([0,100]) #纵坐标的范围,横坐标的话改成xlim
plt.grid(zorder=0,alpha=0.4) #图层在最底下,网格的透明度
plt.ylabel("Accuracy(%)") #纵轴标签
plt.xlabel("Dataset") #横轴标签
plt.bar(x,multi_unrevoke,width=width,label='multi_unrevoke',tick_label = name_list,fc='y',zorder=10,edgecolor='black')
#x表示横坐标,multi_unrevoke是纵坐标的值,width是柱宽,label是图例代表这个柱表示什么,tick_label是横坐标对应的标签,fc是颜色,zorder设置的比网格大,代表柱状图在网格之上不会被网格遮盖,edgecolor表示的柱状图边长的颜色,设置为黑色描个边
for i in range(len(x)):
x[i] = x[i]+width+0.05 #这里设置的是第二个柱对应的横坐标,因为这里想让两个柱状图之间有点空隙,就让横坐标右移了一些
plt.bar(x,one_unrevoke,width=width,label="one_unrevoke",tick_label = name_list,fc='r',zorder=10,edgecolor='black')
xx = [1,2,3,4]
plt.xticks([index -0.875 for index in xx], name_list, rotation='horizontal') #这里是因为x轴的标签不太居中,所以在这里通过index设置一下看能不能居中,rotation是标签的方向,也可以设置成垂直之类的
plt.legend()
# plt.title("Accuracy of Different Datasets without Revoking Requests",fontsize=14)
plt.show()
matplot中可以设置的颜色及其对应英文:
这个是最后的图片,好像比起之前好看多了,一些基本的代码都在上面了,以后再画直方图可以照着改了。
这里再收藏一些其他博主的总结(在画这个图的时候遇到的):
1.Matplotlib中柱状图bar使用
2.python刻度线在中间,让柱状图或者格子与刻度线对齐(总结版)
3.matplotlib绘制两个图形及网格、透明度、图例、颜色等
好的,有了这个总结,老师再也不会担心我画图了!