- Matplotlib安装
cmd输入:pip install Matplotlib
点我进入Matplotlib官网
- 画布(fig)与子图(ax)
需要导入:form matplotlib import pyplt as plt
plt.figure(figsize,dpi)
创建画布
plt.figure(属性) | |
---|---|
figsize = (widtht,hight) | 设置画布宽度和高度 |
dpi | 画布透明度 |
plt.subplot(x y index)
创建子图
plt.subplot(属性) | |
---|---|
x | 行数 |
y | 列数 |
index | 索引(从1开始,从左往右,从上往下) |
plt.subplots(nrows, ncols, sharex = False, sharey = False)
创建画布和子图
返回值:fig,ax
plt.subplots(属性) | |
---|---|
nrows | 子图的行数 |
ncols | 子图的列数 |
sharex | 所有子图使用相同的x轴刻度 |
sharey | 所有子图使用相同的y轴刻度 |
通用方法 | |
---|---|
plt.figure(figsize=None,dpi=None) | 生成新的画布,figsize:画布大小(传参:元组),dpi:透明度 |
plt.savefig(fname) | 保存图片,fname:保存图片位置 |
plt.xticks(ticks=None,lables=None) | ticks:设置x轴刻度的值,labels:刻度标签 |
plt.yticks(ticks=None,lables=None) | ticks:设置y轴刻度的值,labels:刻度标签 |
plt.xlabel(xlabel) | 设置x轴标签 |
plt.ylabel(ylabel) | 设置y轴标签 |
plt.title() | 设置图标题 |
plt.grid() | 根据x轴和y轴的数值展示轴网格 |
plt.legend(prop) | 显示图例标签,prop:局部字体设置 |
plt.annotate(text,xy,xytext,arrowprops = {}) | 数据标签,text:文本标签,xy:标点位置(元组),xytext:文本位置(元组),arrowprops:箭头设置 |
plt.show() | 释放空间,并显示已绘制的图 |
plt.subplots_adjust(wspace,hspace) | 调整子图之间的间距,wspace(左右间距),hspace(上下间距) |
zip() 函数
作用:用于生成坐标
zip(x,y)
生成坐标(x,y必须数量一致)
zip(属性) | |
---|---|
x | x轴上的位置 |
y | y轴上的位置 |
- 中文显示问题
解决方法:
方法一:
import matplotlib
font = {
'family':'SimHei',
'weight':'bold',
'size':12
}
matplotlib.rc("font", **font)
方法二:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
方法三:
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
x = [1,2,3,4]
y = [3,2,1,3]
plt.plot(x,y)
plt.xlabel("x轴标签",fontproperties=font)
plt.show()
- 折线图
折线图以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况
折线图可以通过plt.plot()函数来绘制
plt.plot(x,y,color,linestyle,marker,label)
构件折线图
(x,y元素必须一致)
plt.plot(属性) | |
---|---|
x | 在x轴上的点 |
y | 在y轴上的点 |
color | 设置线的颜色 |
linestyle | 设置线的样式 |
marker | 标记样式 |
label | 图例标签 |
- 散点图
散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式
特点:判断变量之间是否存在数量关联趋势,表示离群点(分布规律)
散点图通过plt.scatter() 函数
plt.scatter(x,y)
来构件散点图
plt.scatter(属性) | |
---|---|
x | 在x轴上的点 |
y | 在y轴上的点 |
- 柱状图及条形图
条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图。
特点:1.能够使人们一眼看出各个数据的大小。
2.易于比较数据之间的差别。
通过 plt.bar() 方法绘制柱状图, plt.barh() 方法绘制条形图
plt.bar(x,height,width = 0.8,bottom,align = "center")
构建 柱状图
plt.bar(属性) | |
---|---|
x | 在x轴上的位置 |
height | 在y轴上的高度 |
width = 0.8 | 柱子的宽度 |
bottom = “None” | 柱子底部的起始位置 |
align = “center” | 校准位置 |
plt.barh(y,width,height = 0.8,align = "center")
构建 条形图
bar.barh(属性) | |
---|---|
y | 在x轴上的长度 |
width | 在y轴上的位置 |
height | 柱子的宽度 |
align = “center” | 校准位置 |
- 直方图
直方图由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据范围,纵轴表示分布情况
特点:绘制连续性的数据,展示一组或者多组数据的分布情况(统计)
通过 plt.hist() 方法绘制
plt.hist(x,bins = None,density =False)
构建图形
plt.hist(属性) | |
---|---|
x | 在x轴上的位置 |
bins = None | 组数(默认为10) |
density = False | 频率(默认为频数) |
- 扇形图
扇形图,用整个圆表示总数,用圆内各个扇形的大小表示各部分数量占总数的百分数。
通过 plt.pie() 方法绘制
plt.pie(x, explode=None, labels=None,autopct=None,shadow=False)
构建图形
plt.pie(属性) | |
---|---|
x | 扇形数据 |
explode = None | 设置某几个分块是否要分离饼图 |
labels = None | 每块扇形标签 |
autopct = None | 百分比数据标签 |
shadow = False | 是否显示阴影 |
plt.pie返回值 | |
---|---|
patchs | 绘制饼图每块对象 |
texts | 文本列表 |
autotexts | 百分比的文本列表 |
- 箱型图
箱线图是一种直观简洁的方式去呈现一组数据的分布。 箱线图广泛用于各个数据分析领域,它能非常简单明了地显示一组数据中5个重要数值,并且还能发现一组数据中的存在的异常值。
五个重要数值 | ||||
---|---|---|---|---|
最大值 | 最小值 | 中位数 | 下四分位数 | 上四分位数 |
通过 plt.boxplot() 方法绘制
ply.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,labels=None,meanline=None,showmeans=None)
构建图形
plt.boxplot(属性) | |
---|---|
x | 需要绘制的箱型图的数据 |
notch = None | 是否展示置信区间 默认为False |
sym = None | 代表异常点的符号表示 默认为圆点 |
vert = None | 是否是垂直的 默认是True |
whis = None | 上下限系数 默认为1.5 |
positions = None | 设置每个盒子的位置 |
widths = None | 设置每个盒子的宽度 |
labels = None | 每个盒子的label |
meanline和showmean | 都为True的时候 会展示平均线 |
- 雷达图
雷达图(Radar Chart)又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量的强弱情况。比如某个企业在哪些业务方面的投入等,都可以用雷达图方便的表示。
用过 plt.polar() 来绘制
plt.polar(theta,r)
来构建图形
plt.polar | |
---|---|
theta | 分割区块 |
r | 数据 |
(区块和数据个数必须相等)
- Axes (子画)
Axes容器是用来创建具体的图形的。比如画曲线,柱状图,都是画在上面。所以之前我们学的使用plt.xx绘制各种图形(比如条形图,直方图,散点图等)都是对Axes的封装
方法 | |
---|---|
axes.set_xlim(min,max) | 限制x轴的范围 |
axes.set_ylim(min,max) | 限制y轴的范围 |
axes.text(x,y,text) | 在坐标位置标注文本 |
axes.set_xlabel(text) | 设置x轴文本标签 |
axes.set_ylabel(text) | 设置y轴文本标签 |
axes.twinx() | 共享x轴 |
axes.twiny() | 共享y轴 |
axes.minorticks_on() | 显示x与y轴的子刻度 |
- Axis(轴)
Axis代表的是x轴或者y轴的对象。包含Tick(刻度)对象,TickLabel刻度文本对象,以及AxisLabel坐标轴文本对象。axis对象有一些方法可以操作刻度和文本等。
axis: xaxis,yaxis
方法 | |
---|---|
axes.axis.set_label_coords(x,y) | 设置x或y轴的文本标签位置 |
自定义刻度格式
from matplotlib import ticker
formatter = ticker.FormatStrFormatter("自定义格式")
ax1.yaxis.set_major_formatter(formatter)
- 多图布局
调整子图间距 fig.tight_layout(h_pad=None,v_pad=None)
(不传参,默认自动调整)
fig.tight_layout(属性) | |
---|---|
h_pad | 上下间距 |
v_pad | 左右间距 |
自定义布局
方法一:
from matplotlib import pyplot as plt
plt.figure()
plt.subplot(221)
plt.subplot(223)
plt.subplot(122)
方法二:
fig.add_gridspec(nrows=1, ncols=1,width_ratios,height_ratios)
创建栅栏模式
fig.add_gridspec(属性) | |
---|---|
nrows | 行 |
nclos | 列 |
width_ratios | 宽的比值 |
height_ratios | 高的比值 |
from matplotlib import pyplot as plt
fig = plt.figure()
gs = fig.add_gridspec(2,2)
fig.add_subplot(gs[0,:])
fig.add_subplot(gs[1,0])
fig.add_subplot(gs[1,1])