一、简介
Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。可以以 Pythonic 和面向对象的方式使用。
matplotlib.pyplot是一组命令样式函数,使Matplotlib的工作方式类似于MATLAB。每个pylot函数对图形进行一些更改:例如,创建图形、在图形中创建绘图区域、在绘图区域中绘制一些线、使用标签装饰绘图等。pyplot主要用于交互式绘图和程序化绘图生成的简单情况。
二、线型图的使用
import matplotlib.pyplot as plt
2.1 plt.plot()
2.1.1 调用格式
#单条线:
plot([x], y, [fmt], data=None, **kwargs)
#多条线一起画
plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)
例子:
plt.plot([1,2,3,4])
向plot()命令提供单个列表或数组,则matplotlib假定它是一个y值序列,并自动为你生成x值。
2.1.2 fmt参数
可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),线型(linestyle),默认为蓝色实线。
具体形式 fmt = ‘[color][marker][line]’,如指定fmt为’bo-’ # 蓝色圆点实线
fmt接收的是每个属性的单个字母缩写,例如:plot(x, y, ‘bo-’) # 蓝色圆点实线
若属性用的是全名则不能用fmt参数来组合赋值,应该用关键字参数对单个属性赋值如:
plot(x,y2,color=‘green’, marker=‘o’, linestyle=‘dashed’,linewidth=1,markersize=6)
plot(x,y3,color=’#900302’,marker=’+’,linestyle=’-’)
2.1.3 关键字参数kwargs(Line2D的属性)
color参数的赋值:
marker参数的赋值:
linestyle参数的赋值:
图例的显示位置:
2.2 plt.figure() 画板对象
格式:
保存figure的图像:fig.savefig(‘xxx.png’)
2.3 plt.title() or axes.set_title()
为坐标系设置标题
参数:
2.4 创建多个子坐标系 plt.subplot(nrows, ncols, index, **kwargs) or fig.add_subplot()
2.5 坐标轴的设置
import matplotlib as mpl
格式:
mpl.rcParams['key']=新值
恢复全局默认设置: mpl.rcdefaults()
风格设置: mpl.style.use(‘key’)
查看所有风格: mpl.style.available
字体设置:
四、2D图形的绘制
4.1 线形图:plt.plot()
4.2 直方图
直方图使用一系列不等高的长条来表示数据,长条的宽度表示数据的间隔范围,长条的高度表示该范围内数据的频数。
直方图是一种统计报告图
格式:plt.hist()
参数介绍:
hist以元组的形式返回直方图的计算结果,包括各区间元素数量、区间的取值范围、以及具体每个区间的对象
4.3 条形图
条形图x轴表示类别
格式:plt.bar() 或者plt.barh()
参数:
在一个图上显示多种条形图,可以调整位置和宽度,让他们并列摆放,也可以堆叠摆放
4.4 饼图
显示一个数据系列里各项大小以及各项所占的比例
格式:
plt.pie(
x,
explode=None, 指定区域分离的距离,通常是一个数组,默认为0
labels=None, 为每个区域添加标注,标签列表
colors=None, 为每个区域添加颜色,为列表
autopct=None,
pctdistance=0.6,
shadow=False, 是否右阴影效果
labeldistance=1.1, 标签离图中心点的距离
startangle=0,
radius=1, 饼的半径
counterclock=True,
wedgeprops=None,
textprops=None,
center=(0, 0),
frame=False,
rotatelabels=False,
*,
normalize=None,
data=None,
)
4.5 玫瑰图
示例:
data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573,
323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373]
theta = np.linspace(0, 2*np.pi, len(data))
fig = plt.figure(figsize=(12,8),facecolor='lightgreen')
# 绘制极坐标
ax = plt.axes(polar=True)
ax.set_theta_direction(-1)
ax.set_theta_zero_location('N')
ax.bar(x = theta,height=data,width=0.3,color=np.random.random((len(data),3)))
ax.set_axis_off() # 关闭坐标系
# 添加text()
for angle,data in zip(theta,data):
ax.text(angle+0.04,data+100,str(data))
4.6 散点图
格式:
plt.scatter(
x,
y,
s=None, 点的大小
c=None, 点的颜色
marker=None, 点型
cmap=None, 颜色主题
norm=None,
vmin=None,
vmax=None,
alpha=None,
linewidths=None,
verts=<deprecated parameter>,
edgecolors=None,
*,
plotnonfinite=False,
data=None,
**kwargs,
)
4.7 箱线图
箱线图(别名:盒子图),利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法。它可以直观明了地识别数据批中的异常值,利用箱线图判断数据批的偏态和尾重,也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。
格式:plt.boxplot(
x, 输入的数据
notch=None,
sym=None,
vert=None,
whis=None,
positions=None,
widths=None,
patch_artist=None,
bootstrap=None,
usermedians=None,
conf_intervals=None,
meanline=None,
showmeans=None,
showcaps=None,
showbox=None,
showfliers=None,
boxprops=None,
labels=None,
flierprops=None,
medianprops=None,
meanprops=None,
capprops=None,
whiskerprops=None,
manage_ticks=True,
autorange=False,
zorder=None,
*,
data=None,
)