柱状图代码如下:
import numpy as np
import matplotlib.pyplot as plt
name_list = ['DBLP', 'YELP']
num_list = [0.8533, 0.5411]
num_list1 = [0.4965, 0.4359]
num_list2 = [0.5486, 0.5673]
x_width = 0.33 # 调节横宽度
x = [0, x_width]
total_width, n = 0.26, 3
width = total_width / n
fontsize = 8 # 字体大小
fig = plt.figure(figsize=(5.3, 4.3), dpi=80, facecolor='white', edgecolor="white") # figsize长、宽
axes = plt.subplot(111)
axes.bar(x, num_list, width=width, label='Esim', hatch='\\\\\\', color='white',
edgecolor='aquamarine') # hatch:填充图案,edgecolor:填充图案颜色,color:柱形图颜色
# 给柱形图加上values
for a, b in zip(x, num_list):
"""
x,y:表示坐标值上的值
string:表示说明文字
fontsize:表示字体大小
verticalalignment:垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
horizontalalignment:水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
xycoords选择指定的坐标轴系统:
figure points:图左下角的点
figure pixels:图左下角的像素
figure fraction:图的左下部分
axes points:坐标轴左下角的点
axes pixels:坐标轴左下角的像素
axes fraction:左下轴的分数
data:使用被注释对象的坐标系统(默认)
polar(theta,r):if not native ‘data’ coordinates t
arrowprops #箭头参数,参数类型为字典dict
width:箭头的宽度(以点为单位)
headwidth:箭头底部以点为单位的宽度
headlength:箭头的长度(以点为单位)
shrink:总长度的一部分,从两端“收缩”
facecolor:箭头颜色
bbox给标题增加外框 ,常用参数如下:
boxstyle:方框外形
facecolor:(简写fc)背景颜色
edgecolor:(简写ec)边框线条颜色
edgewidth:边框线条大小
"""
axes.text(a, b + 0.028, '%.4f' % b, ha='center', verticalalignment="top", fontsize=fontsize)
for i in range(len(x)):
x[i] = x[i] + width
axes.bar(x, num_list1, width=width, label='HIN2Vec', tick_label=name_list, hatch='///', color="white",
edgecolor='lightgreen')
for a, b in zip(x, num_list1):
axes.text(a, b + 0.028, '%.4f' % b, ha='center', verticalalignment="top", fontsize=fontsize)
for i in range(len(x)):
x[i] = x[i] + width
axes.bar(x, num_list2, width=width, label='HINGAN', tick_label=name_list, hatch='//', color="white",
edgecolor='mediumpurple')
for a, b in zip(x, num_list2):
axes.text(a, b + 0.028, '%.4f' % b, ha='center', verticalalignment="top", fontsize=fontsize)
plt.xticks(np.asarray([0, x_width]) + total_width / 3, name_list) # 调节横坐标不居中
font1 = {
# 'family': 'Times New Roman', # 字体
# 'weight': 'normal',
'size': fontsize # 字体大小
}
plt.tick_params(labelsize=fontsize)
plt.legend(loc="upper right", prop=font1) # 图例位置、大小
plt.ylabel('AP', font1) # 纵坐标大小、字体
plt.show()
效果图如下: