柱形图
一、用途及参数介绍
1、用于二维数据,一般有一个分类变量,需要对每个分类进行计数或百分比。
plt.bar(x,height,width,color)
2、x记录x轴上的标签
3、height记录每个柱的高度
4、width设置每个柱的宽度
5、color设置柱颜色,传入颜色值得列表。
二、绘制简易柱状图
1、开启jupyter notebook的matplotlib支持
%matplotlib inline
2、导包
from matplotlib import pyplot as plt
from matplotlob imprort font_manager
3、自定义字体
myfont=font_manager.FontProperties('字体目录+位置')
4、准备数据
x=[]
y=[]
5、准备画布
plt.figure(figsize=(20,8),dpi=80)
6、绘制柱形图
plt.bar(x,y)
7、显示图形
plt.show()
三、丰富、美化柱形图(如果需要从DataFrame中取值,需要tolist()转换为列表格式)
1、修改柱状图的宽度
plt.bar(x,y,width=0.3)
2、修改柱状图的颜色
(1)英文单词
plt.bar(x,y,width=0.3,color=['red','yellow','green','blue','gray','black']) #颜色个数与x的个数相同
(2)RGB十六进制
plt.bar(x,y,width=0.3,color=[十六进制颜色列表,每个颜色的值都用英文引号括起]) #颜色个数与x的个数相同
3、给柱状图添加文字描述信息
plt.xticks(x,fontproperties=myfont)
plt.xticks(range(4),['北京市','上海市','天津市','重庆市']) #可以通过先分刻度,再赋标签值的方法添加标签
4、在柱状图上添加标注,水平居中
(1)rects=plt.bar(x,y,width=0.3,color=['red','yellow','green','blue','gray','black'])
for rect in rects:
height=rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2,height+0.3,str(height),ha='center')
参数解释:
rect.get_x() 柱形图的左边的x值
rect.get_width()s 柱形图的宽度
rect.get_height() 柱形图的高度
ha 水平位置设置
(2)通过enumerate函数添加
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(4),y)
plt.ylabel('Y')
plt.title('四个直辖市GDP大比拼')
plt.xticks(range(4),['北京市','上海市','天津市','重庆市'])
plt.ylim([5000,15000])
for x,y in enumerate(GDP):
plt.text(x,y,'%s' %round(y,1),ha='center')
四、创建一组多柱图形
1、导包、显示汉字
%matplotlib inline
import matplotlib.pyplot as plt
import random
import numpy as np
plt.rc('font', family='SimHei', size=13)
2、准备数据
x = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y1 = [89, 45, 56, 74, 23, 21]
y2 = [56, 77, 93, 68, 45, 67]
3、设定x轴的刻度和画布大小
x_location = np.arange(len(x))
plt.figure(figsize=(8, 5))
plt.bar(x_location, y1, label='线下', width=0.3)
plt.bar(x_location+0.3, y2, label='线上',width=0.3)
plt.xticks(x_location+0.15, x)
plt.legend()
plt.title('各手机品牌销售额对比', loc="left",
fontdict={'fontsize':18,'color':'red'})