简单示例
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();