柱状图
使用Matplotlib提供的bar()函数来绘制柱状图;
每次调用bar()函数都会生成一组柱状图,可以通过多次调用bar()函数实现多组柱状图;
绘图方法bar():
bar(x,height,width=0.8,*,align='center',**kwargs)
主要参数:
x:包含所有柱子的下标的列表
height:y轴的数值序列,也是柱状图的高度;
width:柱状图的宽度,一般为0.8
align:柱子对齐方式,有两个可选值:center和edge。center表示每根柱子根据下标来对齐,edge则表示每根柱子 全部以下标为起点,然后标识到下标的右边。如果不指定该参数,默认值是center。
color:每根柱子呈现的颜色,可指定一个固定值或一个列表
edgecolor:每根柱子边框的颜色
linewidth:每根柱子的边框宽度
tick_label:每根柱子上显示的标签
xerr:每根柱子顶部在横轴方向的线段长度
yerr:每根柱子顶端在纵轴方向的线段长度
eclor:设置xerr和yerr的线段颜色,可以指定一个固定值或一个列表
课件例题实现:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
data=pd.DataFrame({'月份':[1,2,3,4,5,6,7,8,9,10,11,12],
'男装':[51,32,58,57,30,46,38,38,40,53,58,50],
'女装':[70,30,48,73,82,80,43,25,30,49,79,60],
'餐饮':[60,40,46,50,57,76,70,33,70,61,49,45],
'化妆品':[110,75,130,80,83,95,87,89,96,88,86,89],
'金银首饰':[143,100,89,90,78,129,100,97,108,152,96,87]
})
data.plot(x='月份',kind='bar')
plt.xlabel('月份',fontproperties='simhei')
plt.ylabel('营业额(万元)',fontproperties='simhei')
plt.show()
简单柱状图:
import matplotlib.pyplot as plt
num_list=[1.5,0.6,7.8,6]
plt.bar(range(len(num_list)),num_list)
plt.show()
条形柱状图:
import matplotlib.pyplot as plt
name_list=['Monday','Tuesday','Friday','Sunday']
num_list=[1.5,0.6,7.8,6]
plt.barh(range(len(num_list)),num_list,color='rgb',tick_label=name_list)
plt.show()
堆叠柱状图:
import matplotlib.pyplot as plt
name_list=['Monday','Tuesday','Friday','Sunday']
num_list=[1.5,0.6,7.8,6]
num_list1=[1,2,3,1]
plt.bar(range(len(num_list)),num_list,label='boy',fc='y')
plt.bar(range(len(num_list)),num_list1,bottom=num_list,label='girl',tick_label=name_list,fc='r')
plt.legend()
plt.show()
饼状图:
绘图方法pie():
x:(创建饼状图的数据,每一块)的比例,如果sum(x)>1会使用sum(x)归一化;
explode:(每一块)离开中心距离,一个list或数组;
labels:为每个楔形添加标签
color:颜色
autopct:控制饼图内部百分比设置,可以使用format字符串或者format function:可以是整数('%d%%')、浮点数(%1.3f%%)、字符串('%s%%')、函数;
label distance:float ,optional,default:0.6;类似于labeldistance,指定autopct的位置刻度,默认值为0.6;
shadow:bool,optional,default:False;为饼状图画阴影(True)。
startangle:float,optional,f\default:None;起始绘制角度,默认是从X轴正方向逆时针画起,如设定=90则从Y轴正方向画起;
radius:float,optional,f\default:None;饼图的半径,若为None时,则默认为1;
counterclock:bool,optional,default:True;指定分数方向,逆时针(True)或顺时针;
wedgeprops:dict,optional,default:None;描述楔形边界线宽度值,参数形式;
textprops:dict,optional,default:None;传递给文本对象的字典参数;
center:list of float,optional,default:(0,0);图标的中心为,默认(0,0),也可以是两个标量的序列(sequence of 2 scalars)
简单饼状图:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
#用来正常显示中文标签
labels='A','B','C','D'
sizes=[10,20,30,40]
plt.pie(sizes,labels=labels)
plt.title("饼状图实战")
plt.text(1,-1.2,'By winner')
plt.show()
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
#用来正常显示中文标签
labels='A','B','C','D'
sizes=[10,20,30,40]
explode=(0,0,0.1,0)
plt.pie(sizes,labels=labels,explode=explode)
plt.title("饼状图实战")
plt.text(1,-1.2,'By winner')
plt.show()