一.画图方法
• 画一个折线图:plt.plot()
• 画一个条形图:plt.bar()
• 画一个直方图:plt. hist()
• 画一个饼图:plt. pie()
• 画一个堆叠图:plt. stackplot()
1.导入模块
import matplotlib.pyplot as plt # from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']# 用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
2.开始画图
plt.figure(figsize=(8,4))#创建画板
# 在画板上绘制两条折线图
plt.plot([1,2,3,4],[4,7,10,15],label="第一条折线") #label是图表的小图标
plt.plot([2,4,5,9],[10,14,15,16],label="第二条折线")
# 添加X,Y轴标签
plt.xlabel('X轴')
plt.ylabel('Y轴')
# 为图表添加标题
plt.title('为图表添加标题')
# 为图表添加小图标
plt.legend(loc='lower right') #指定小图标的位置,upper上方,lower下方
二.绘制常见的图表
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
1.折线图,plt.plot
x = [1,2,3,4,5,6,7,8]
y = [5,2,4,2,1,4,5,2]
plt.plot(x,y,label='折线图') #添加小图标
plt.xlabel('X')
plt.ylabel('Y') #添加X,Y轴标签
plt.legend(loc='lower right') #指定小图标位置,右下方
2.柱状图,plt.bar
x1,y1=[1,3,5,7,9],[5,2,7,8,2]
x2,y2=[2,4,6,8,10],[8,6,2,5,6]
plt.bar(x1,y1,label='柱状图-01',color='r') #color指定线条颜色
plt.bar(x2,y2,label="柱状图-02",color='g')
plt.title('绘制柱状图')
plt.xlabel('样本值')
plt.ylabel('样本数')
plt.legend()
3.条形图,plt.barh
x1,y1=[1,3,5,7,9],[5,2,7,8,2]
x2,y2=[2,4,6,8,10],[8,6,2,5,6]
plt.barh(x1,y1,label='条形图-01',color='#123456')
plt.barh(x2,y2,label="条形图-02",color='#0000CC')
plt.legend()
4.直方图,plt.hist
#绘制频率分布直方图
# 年龄样本
population_ages =[22,55,62,45,21,22,34,42,42,4,99,102,110,120,
121,122,130,111,115,112,80,75,65,54,44,43,42,48]
# 划分区间
bins =[0,10,20,30,40,50,60,70,80,90,100,110,120,130]
# 画图
plt.hist(population_ages, bins, histtype='bar',label='年龄分布情况')
plt.xlabel('年龄区间')
plt.ylabel('人数')
plt.legend()
plt.title('年龄分布直方图')
5.画饼图,plt.pie
audience=[2,5,10,3] # 随机抽取20个人采访,是否关注世界杯
colors=['c','m','r','b'] # 定义饼图每个扇形区域的填充颜色
types=['少年','青年','中年','老年'] # 定义扇形区域标签
plt.pie(audience, #数据
labels=types, #扇形区域标注
startangle=90, #开始绘制扇形区域的角度
explode=(0,0.2,0,0), #突出显示某一块扇形区域
shadow=True, #是否显示阴影
colors=colors, #扇形区域颜色
autopct='%1.1f%%') #扇形区域
plt.title('关注世界杯观众的年龄分布情况')
6.绘制散点图
x=[1,2,3,4,5,6,7,8]
y=[5,2,4,2,1,4,5,2]
plt.scatter(x,y,label='skitscat',color='k',s=20,marker="o")
'''
x,y: 数据点的x,y轴
label: 图例的注释
color: 散点图点的颜色
s: 散点图点的大小
marker: 散点图点的形状
'''
plt.xlabel('x')
plt.ylabel('y')
plt.title('散点图')
plt.xticks(range(9)) #设置x,y轴刻度,保持图表美观
plt.yticks([0,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5])
plt.legend()
plt.show()
7.绘制堆叠图
days=[1,2,3,4,5]
sleeping=[7,8,6,11,7]
eating=[2,3,4,3,2]
working=[7,8,7,2,2]
playing=[8,5,7,8,13]
plt.stackplot(days, #时间轴
sleeping,eating,working,playing, #堆叠图数据
colors=['m','c','r','k']) #颜色
#为堆叠图加上图例
plt.plot([],[],color='m',label='sleeping',linewidth=5)
plt.plot([],[],color='c',label='eating',linewidth=5)
plt.plot([],[],color='r',label='working',linewidth=5)
plt.plot([],[],color='k',label='playing',linewidth=5)
plt.xlabel('星期')
plt.ylabel('花费时间')
plt.title('堆叠图')
# 显示图表
plt.legend()