python画分组柱状图的模板

主要特征:

1、分组柱状图

2、能显示组内两个柱子差额百分比

3、纵坐标对数刻度

4、图例分列

代码及其注释:

import numpy as np
import matplotlib.pyplot as plt
# 需要画图的数据
data1 = [31.3313839,81.4741246,535.6064253,6615.067486,84241.35153]
data2 = [33.592789,92.7759879,723.3740509,9606.228677,127541.5666]


# 设置X轴标签
#labels = [1000,10000,100000,1000000,10000000]
labels_ = ['3','4','5','6','7']

#用来为坐标的常规坐标 还是 对数坐标做准备
fig, ax = plt.subplots(figsize=(6.4, 4.8))#用来控制图片的大小
#fig, ax = plt.subplots()

# 设置柱状图参数
width = 0.35 #柱状图每个柱子的宽度,同时也是调整每组柱子之间的间隙
x = np.arange(len(labels_)) #用来指定每个柱子位置参数


# 绘制柱状图,正常坐标
ax.bar(x-width/2, (data1), width=width, label='CL_Tucker')#第一个参数是该柱子的中心位置的坐标
ax.bar(x+width/2, (data2), width=width, label='GTA')

ax.set_yscale('log', basey=10)#设置柱子的纵坐标为对数刻度


#在需要的位置添加数据标签,添加提高的百分比
for j in range(len(data1)):
    differ = (data2[j] - data1[j]) / data2[j]
    x_pos = j-0.1
    y_pos = data2[j] + 5
    plt.text(x_pos,y_pos, '- {:.1f}%'.format(differ * 100), ha = 'center')
    #参数1和2是添加的文字的位置,参数3添加的文字内容



# 设置图表标题和轴标签
#plt.title('Multiple Bar Chart')
plt.xlabel('Order')
plt.ylabel('Time for factor updating(s)')


#plt.xticks(x, fontsize=12, rotation=45,loc='inside')#设置标签的文字大小和旋转方向
plt.xticks(x, labels_)  #使得标签现实的是给定的文字标签

# 设置图例
plt.legend(loc='upper left', ncol=2)#设置图例的位置和列数

#获取默认图片尺寸
figure = plt.gcf()
width = figure.bbox.width
height = figure.bbox.height
print(width,height)

#plt.tight_layout(pad=10)

# 显示图表
plt.show()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值