赞
踩
Matplotlib是一个综合库,用于在Python中创建静态,动画和交互式可视化。matplotlib是matrix + plot + library的缩写,通过Matplotlib,仅需要几行代码,便可以生成直方图,条形图,散点图等。
绘图的两种方法:pyplot
、面向对象
。
pyplot
:matplotlib.pyplot是使matplotlib像MATLAB一样工作的命令样式函数的集合。每个pyplot函数对一个图进行一些更改,例如,创建图,设置横纵坐标、标题等等。
面向对象
:面向对象是指创建一个图对象Figure,在创建多个Axes进行绘图,一个Figure可以包含多个Axes,可以理解以为一次plot就用来一次Axes。
两种方法都能达到一样的效果,plot操作更加简便,这里仅是对pyplot的简单介绍,下面是对Matplotlib.pyplot库函数的一些讲解。
首先是Matplotlib库的安装,这里直接使用pip安装,输入指令:
pip install matplotlib
首先事figure()函数,这个函数的作用是创建一个画布。
figure(num=None, # autoincrement if None, else integer from 1-N
figsize=None, # defaults to rc figure.figsize
dpi=None, # defaults to rc figure.dpi
facecolor=None, # defaults to rc figure.facecolor
edgecolor=None, # defaults to rc figure.edgecolor
frameon=True,
FigureClass=Figure,
clear=False,
**kwargs
)
这里挑常用的参数进行讲解,参数解释如下:
num:图形编号或名称,取值为数字/字符串
figsize:绘图对象的宽和高
dpi:绘图对象的分辨率,缺省值为80
facecolor:背景颜色
edgecolor:边框颜色
frameon:表示是否显示边框
代码:
import matplotlib.pyplot as plt
plt.figure(num="matplotlib",figsize=(4,4),facecolor='r',edgecolor='b',frameon=True)
plt.plot()
plt.show()
运行结果:
绘制子图的函数subplot():
subplot(row, column,order):
参数解释:
row:行
column:列
order:子图的序列
代码:
import matplotlib.pyplot as plt
plt.figure("matplotlib",facecolor="r")
plt.subplot(1,2,1)
plt.subplot(1,2,2)
plt.show()
运行结果:
在有时候我们想给图添加中文元素,但是会出现乱码或报错,需要引入运行参数rcParams,其配置如下:
plt.rcParams['font.family']="SimHei"
几种常见字体,其他可自行查询。
中文字体 | 英文描述 | 中文字体 | 英文描述 |
---|---|---|---|
宋体 | SimSun | 黑体 | SimHei |
微软雅黑 | Microsoft YaHe | 微软正黑体 | Microsoft JhengH |
楷体 | KaiTi | 仿宋 | FangSong |
隶书 | LiSu | 幼圆 | YouYuan |
为图添加标题函数:
suptitle(标题):
title(标题)
其中suptitle对应于全局标题,title对应于子图的标题。
代码:
import matplotlib.pyplot as plt plt.rcParams['font.family']="SimHei" plt.figure() plt.suptitle("全局标题") plt.subplot(221) plt.title("子标题1") plt.subplot(222) plt.title("子标题2") plt.subplot(223) plt.title("子标题3") plt.subplot(224) plt.title("子标题4") # plt.tight_layout() plt.show()
运行结果:
可以看子标题3、4和子图1、2之间的间距不合适,有部分遮挡,这时可以使用tight_layout()函数,自动调整子图,消除遮挡,将上面隐去的代码恢复即可。
在使用到负号时也可能会因符号问题导致图中出现空白格,可以在代码段总放着一条语句:
plt.rcParams["axes.unicode_minus"]=False # 解决负号问题
添加文本函数text():
text( x, y, s, fontsize,color )
参数解释:
x:文字的横坐标(根据坐标轴范围变动)
y:文字的列坐标
s:文字(string格式)
fontsize:字体大小
color:字体颜色
其中坐标是根据坐标轴范围变动
代码:
import matplotlib.pyplot as plt
plt.figure("matplotlib",facecolor="w")
plt.plot()
plt.text(0.03,0.03,s="matplotlib",color="r")
plt.show()
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。