赞
踩
主要特征:
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。