提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Matplotib主要用于绘制2D图表的Python库,通过Matplotlib, 开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。它支持numpy、pandas的数据结构,具有丰富的绘制图表、定制图表元素(图例、注释文本、表格等)或样式(如颜色、字体、线型等)的功能,可以帮助开发人员轻松获得高质量的图表。
一、饼状图
使用pyplot的pie()函数可以快速地绘制饼图或圆环图,pie() 函数的语法格式如下所示:
pie(x, explode=None, labels=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,radius=None, counterclock=True, wedgeprops=None, textprops=None,center=(0,0), frame-False, rotatelabels=False, *, data=None)
该函数常用参数的含义如下
x:表示扇形或楔形的数据
explode: 表示扇形或楔形离开圆心的距离
labels:表示扇形或楔形对应的标签文本
autopct: 表示控制扇形或楔形的数值显示的字符串,可通过格式字符串指定小数点后的位数%3.2f%%【autopct='%.2f%%': %.2f表示在饼图上输出浮点数并保留两位小数。%%表示直接输出一个%.】
pctdistance:表示扇形或楔形对应的数值标签距离圆心的比例,默认为0.6
shadow:表示是否显示阴影。
labeldistance:表示标签文本的绘制位置( 相对于半径的比例),默认为1:1。
startangle:表示起始绘制角度,默认从x轴的正方向逆时针绘制。
radius:表示扇形或楔形的半径。
wedgeprops:表示控制扇形或楔形属性的字典。例如,通过wedgeprops = {'width': 0.7}将楔形的宽度设为 0.7。
textprops:表示控制图表中文本属性的字典。
center:表示图表的中心点位置,默认为(0,0)。
frame :表示是否显示图框。
饼形图
import numpy as np
import matplotlib.pyplot as plt
x=np.array([10,30,55,25,60,45,20])
pie_labels=np.array(['a','b','c','d','e','f','g'])
#labels表示扇形或楔形对应的标签文本;autopct表示控制扇形或楔形的数值显示的字符串;
#radius表示扇形或楔形的半径。
plt.pie(x,labels=pie_labels,autopct="%.2f%%",radius=2)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.array([10,30,55,25,60,45,20])
pie_labels=np.array(['a','b','c','d','e','f','g'])
#labels表示扇形或楔形对应的标签文本;autopct表示控制扇形或楔形的数值显示的字符串;
#radius表示扇形或楔形的半径。
#shadow=True表示显示阴影;explode=[0,0.4,0,0,0,0,0]表示b向外形离开圆心的距离
plt.pie(x,labels=pie_labels,autopct="%.2f%%",radius=2,shadow=True,explode=[0,0.4,0,0,0,0,0])
plt.show()
二、环形图
使用pyplot的pie()函数可以快速地绘制饼图或圆环图,pie() 函数的语法格式如下所示:
pie(x, explode=None, labels=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,radius=None, counterclock=True, wedgeprops=None, textprops=None,center=(0,0), frame-False, rotatelabels=False, *, data=None)
该函数常用参数的含义如下
x:表示扇形或楔形的数据
explode: 表示扇形或楔形离开圆心的距离
labels:表示扇形或楔形对应的标签文本
autopct: 表示控制扇形或楔形的数值显示的字符串,可通过格式字符串指定小数点后的位数%3.2f%%【autopct='%.2f%%': %.2f表示在饼图上输出浮点数并保留两位小数。%%表示直接输出一个%.】
pctdistance:表示扇形或楔形对应的数值标签距离圆心的比例,默认为0.6
shadow:表示是否显示阴影。
labeldistance:表示标签文本的绘制位置( 相对于半径的比例),默认为1:1。
startangle:表示起始绘制角度,默认从x轴的正方向逆时针绘制。
radius:表示扇形或楔形的半径。
wedgeprops:表示控制扇形或楔形属性的字典。例如,通过wedgeprops = {'width': 0.7}将楔形的宽度设为 0.7。
textprops:表示控制图表中文本属性的字典。
center:表示图表的中心点位置,默认为(0,0)。
frame :表示是否显示图框。
环形图
import numpy as np
import matplotlib.pyplot as plt
x=np.array([10,30,55,25,60,45,20])
pie_labels=np.array(['a','b','c','d','e','f','g'])
#labels表示扇形或楔形对应的标签文本;autopct表示控制扇形或楔形的数值显示的字符串;
#radius表示扇形或楔形的半径。
#wedgeprops将楔形的宽度设为0.7;pctdistance:表示扇形或楔形对应的数值标签距离圆心的比例,默认为0.6
plt.pie(x,labels=pie_labels,autopct="%.2f%%",radius=2,wedgeprops={'width':0.8},pctdistance=1.2)
plt.show()
三、面积图
pyplot 的stackplot()函数:
stackplot(x, y, labels=() ,baseline='zero', data=None, *args, **kwargs)
该函数常用参数的含义如下。
x: 表示x轴的数据,可以是一维数组。
y:表示y轴的数据,可以是二维数组或一维数组序列。
labels :表示每组折线及填充区域的标签。
baseline :表示计算基线的方法,包括'zero'、 'sym'、 'wiggle'和'weighted_ wiggle'。 其中,'zero'表示恒定 零基线,即简单的堆积图; 'sym'表示对称于零基线; 'wiggle' 表示最小化平方斜率的总和; 'weighted _wiggle' 表示执行相同的操作,但权重用于说明每层的大小。
面积图
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(6)
y1=np.array([1,2,4,6,5,3])
y2=np.array([2,5,3,5,7,8])
y3=np.array([3,6,7,3,6,8])
plt.stackplot(x,y1,y2,y3)
plt.show()
四、直方图
使用pyplot的hist()函数可以快速绘制直方图,hist()函数的语法格式如下所示:
hist(x, bins=None, range=None, density=None, weights=None, cumulative=False,
bottom=None, histtype='bar', align='mid' ,orientation= 'vertical', rwidth=None,
log=False, label=None,stacked=False, normed=None, *, data=None, **kwargs)
该函数常用参数的含义如下:
x:表示x轴的数据,可以为单个数组或多个数组的序列。
bins :表示矩形条的个数,默认为10。
range: 表示数据的范围。若没有提供range参数的值,则数据范围为(x.min(), x.max())
cumulative: 表示是否计算累计频数或频率。
histtype:表示直方图的类型,支持"bar'、'barstacked'、 'step'、 'stepfilled' 四种取值,其中'bar'为默认 值,代表传统的直方图; 'barstacked'代表堆积直方图; 'step'代表未填充的线条直方图; 'stepfilled'代表填充 的线条直方图。
align: 表示矩形条边界的对齐方式,可设置为'left'、'mid' 或'right', 默认为'mid'。
orientation: 表示矩形条的摆放方式,默认为'vertical', 即垂直方向。
rwidth :表示矩形条宽度的百分比,默认为0。若histtype 的值为'step'或stepfilled 则直接忽略rwidth参数的 值。
stacked:表示是否将多个矩形条以堆积形式摆放。
直方图
import numpy as np
import matplotlib.pyplot as plt
#1-100区间内随机取50个
x=np.random.randint(1,100,50)
#bins默认值为10,这里取值8
plt.hist(x,bins=8,histtype="stepfilled")
plt.show()