python做柱状图

简单示例

import matplotlib.pyplot as plt
name_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
num_list = [33, 44, 53, 16, 11, 17, 17, 10]
plt.bar(range(len(num_list)), num_list, color='rgb', tick_label=name_list)
plt.show();

在这里插入图片描述

如何加入高度的显示呢?

import numpy as np
from matplotlib import pyplot as plt
mu =1 #期望为1
sigma = 2#标准差为3
num = 10  #个数为10000
data = np.random.normal(mu, sigma, num)
recs=plt.bar(range(len(data)),np.exp(data))#返回的是矩形对象,可以有x坐标、y坐标、宽度等信息
x=[rec.get_x() for rec in recs]#使用列表推导式获取bar的横坐标
y=[rec.get_height() for rec in recs]#使用列表推导式获取bar的高度
w=[rec.get_width() for rec in recs]#使用列表推导式获取bar的宽度
textx=[x+width/2-0.3 for x,width in zip(x,w)]#计算标注的横坐标
result=[plt.text(x,y,str(np.round(y))) for x,y in zip(textx,y)]#使用列表推导式标注高度信息
plt.show()

在这里插入图片描述

整合在一起!

其中标注横坐标也有两种方式
一种是直接tick_label=name_list
另一种是plt.xticks(index, sample_class,fontsize=5)
最后显示高度加入autolabel(rects)函数所示

#method1
plt.bar(range(len(sample_value)), sample_value, tick_label=name_list)
#method2
plt.bar(index, sample_value,width=0.8) #绘制柱状图
plt.xticks(index, sample_class,fontsize=5) #将横坐标用sample_class替换,fontsize用来调整字体的大小
sample_class = ['pulsar', 'non-pulsar']
sample_value = [1196, 89995]
# figsize = (20,8)#调整绘制图片的比例

# method1
# plt.bar(range(len(sample_value)), sample_value, tick_label=name_list)

# # method2
# index = np.arange(len(sample_class)) 
# plt.bar(index, sample_value,width=0.8) #绘制柱状图
# plt.xticks(index, sample_class,fontsize=5) #将横坐标用sample_class替换,fontsize用来调整字体的大小

# 显示高度
def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.- 0.2, 1.03*height, '%s' % int(height))     
autolabel(plt.bar(range(len(sample_value)), sample_value, tick_label=sample_class))


plt.xlabel('class') #x轴
plt.ylabel('value') #y轴
plt.title('sample') #图像的名称
plt.tight_layout()
plt.show();

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值