python机器学习基础--matplotlib库(下)

matplotlib常用图表

plot()函数

线形图是最为常见的绘图方式,主要依靠其表现的曲线形状来展示出数据的特性,使用plot()函数可以绘制出线性图
语法格式:plt.plot(x,y,format_string,**kwargs)

参数描述
xx轴数据 ,列表或数组,可选(当绘制多条曲线时必选)
yy轴数据,列表或数组
format_string控制曲线格式的字符串
**kwargs第二条曲线的参数或更多的[x,y,format_str]
案例一:利用线性图绘制三角函数
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False	
x=np.linspace(0,np.pi)
y_sin=np.sin(x)
y_cos=np.cos(x)
y_tan=np.tan(x)

plt.subplot(221)
plt.plot(x,y_sin)
plt.subplot(222)
plt.plot(x,y_cos)
plt.subplot(223)
plt.plot(x,y_tan)

plt.show()

运行结果
在这里插入图片描述

散点图

有时候数据点之间的关系不一定呈现线性关系,有时需要查看数据点在空间中的分布情况,这时候就需要用到散点图,散点图主要用于演示两个变量的相关性:正相关、负相关、不相关
语法格式:scatter(x,y,s=None,c=None,marker=None,alpha=None,edgecolor=None,linewidths=None)

参数介绍

参数描述
x,y相同长度的数组或序列
c颜色
s标记大小
marker标记字符样式
edgecolor轮廓颜色
alpha透明度,取值范围(0-1)
linewidths线宽
案例二:生成三种相关性的散点图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'		# 用于显示中文
matplotlib.rcParams['axes.unicode_minus'] = False		# 用于显示负数
N=500

# 不相关
plt.subplot(221)
x1=np.random.randn(N)
y1=np.random.randn(N)
plt.scatter(x1,y1)
plt.title('不相关')

# 正相关
plt.subplot(222)
x2=np.random.randn(N)
y2=x2+np.random.randn(len(x2))*0.1
plt.title('正相关')
plt.scatter(x2,y2)

# 负相关
plt.subplot(223)
y3=-x2+np.random.randn(len(x2))*0.1
plt.title('负相关')
plt.scatter(x2,y3)

plt.show()

运行结果
在这里插入图片描述

饼图

语法格式:pie(sizes,explode,labels,autopct,shadow,startangle)

各参数说明1

参数描述
sizes各模块所占比例
explode各模块是否突出,0表示不突出,越大模块离中心越远
labels各模块标签
autopct各模块百分比精度,如’%.f%%'表示饼图的各模块显示的精度为整数,后面的两个百分号做转义符号用于显示一个%
shadow是否显示阴影,默认False
startangle开始模块所在位置(以x轴正半轴为起点旋转的角度)
案例三:饼图示例

在这里插入图片描述

直方图

直方图是一种频次统计报告图,主要用于观察数据的分布状态,第I个长方条表示该区间发生的数量n,宽度表示该区间大小,区间范围是发生这些事的条件,
语法格式:pyplot.hist(x,bins=None,range=None,bottom=None,color=None,label=None)

主要参数描述
x指定每个bin(箱子)分布的数据,对应x轴
bins指定bin(箱子)的个数,也就是总共有几条条状图
density是否显示频数统计结果
normed决定y轴的取值是元素的个数(False),元素出现的频率(True)
案例四:生成一个具有正态分布特点的柱状图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
data=np.random.normal(100,20,1000)		# 生成一个均值100,标准差20,数据量为1000的具有正态分布特点的数组
# y轴为频度
plt.subplot(211)
plt.hist(data,bins=25,density=True)

# y轴为频率
plt.subplot(212)
plt.hist(data,bins=25,density=False)

plt.show()

运行结果
在这里插入图片描述

柱状图

能够直观地表现数据量以及增长变化关系,常用于表现各类经济或统计领域的分类数据2
语法格式:pyplot.bar(x,height,alpha=1,width=0.8,color,edgecolor,label,lw,bottom)

参数描述
xx轴的位置序列
heighty轴的数值序列
alpha透明度
width柱状图宽度
color柱形图宽度
edgecolor图形边缘颜色
label注释
lw线的宽度
bottomy轴坐标轴起点
案例五:柱状图示例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'		# 用于显示中文

x=np.arange(5)
y1=[20,15,20,35,30]
y2=[10,25,20,35,15]
width=0.5
plt.locator_params('both',nbins=6)		# xy轴的刻度

# 垂直柱状图
plt.subplot(221)
plt.bar(x,height=y1,color='g')
plt.title('垂直柱状')

# 水平柱状图
plt.subplot(222)
plt.bar(x=0,bottom=x,height=0.8,width=y2,orientation='horizontal')
plt.title('水平柱状')

# 两个并列的柱状图
plt.subplot(223)
plt.bar(x,y1,width=width,label='y1-x')
plt.bar(x+width,y2,width=width,label='y2-x')
plt.legend(loc=0)
plt.title('并列的柱状图')

# 层叠的柱状图
plt.subplot(224)
plt.bar(x,y1,width=width,label='y1-x')
plt.bar(x,y2,bottom=y1,width=width,label='y2-x')
plt.legend(loc=0)
plt.title('层叠的柱状图')

plt.subplots_adjust(wspace =0.5, hspace =1)		# 分别控制子图间的水平距离与竖直距离
plt.show()

运行结果
在这里插入图片描述


  1. plt.axis(‘equal’)表示绘制出的饼图为正圆形,plt.axes(aspect=1)可以达到相同的效果 ↩︎

  2. 注意当柱状图为水平表示时,参数会有变化 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夺笋123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值