官网文档:https://matplotlib.org/
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
第一部分的作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分。
函数名称 | 函数作用 |
---|---|
plt.figure | 创建一个空白画布,可以指定画布大小、像素 |
figure.add_subplot | 创建并选中子图,可以指定子图的行数、列数和选中图片的编号 |
第二部分是绘图的主题部分。可以先绘制图形再添加标签,但是添加图例一定要在绘图之后。添加各类标签和图例的函数表:
函数名称 | 函数作用 |
---|---|
plt.title | 在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数 |
plt.xlabel | 在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数 |
plt.ylabel | 在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数 |
plt.xlim | 指定当前x轴的范围,只能确定一个数值区间,而无法使用字符串标识 |
plt.ylim | 指定当前y轴的范围,只能确定一个数值区间,而无法使用字符串标识 |
plt.xticks | 指定x轴刻度的数目与取值 |
plt.yticks | 指定y轴刻度的数目与取值 |
plt.legend | 指定当前图形的图例,可以指定图例的大小、位置、标签 |
第三部分主要用于保存和显示图形,这部分内容常用函数只有两个,并且参数很少
函数名称 | 函数作用 |
---|---|
plt.savefig | 保存绘制的图形,可以指定图形的分辨率、边缘的颜色等参数 |
plt.show | 在本机显示图形 |
##2、设置pyplot的动态rc参数
pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。在pyplot中,几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度等等。
默认的rc参数可以在Python交互式环境中动态修改。所有存储在字典变了中的rc参数多美称为ecParams。rc参数在修改后,绘图时使用的默认参数会发生改变。
plt.rcParams['rc参数名称'] = params
rc参数名称 | 解释 | 取值 |
---|---|---|
lines.linewidth | 线条宽度 | 去0~10之间的数值,默认是1.5 |
lines.linestyle | 线条样式 | 可取’-’、’–’、’-.’、’:‘4种,默认’-’ |
lines.marker | 线条上点的形状 | 20种种可取值,默认为None |
line.markersize | 点的大小 | 去0~10之间的数值,默认为1 |
lines.linestyle参数取值和意义
取值 | 意义 |
---|---|
‘-’ | 实线 |
‘-.’ | 点线 |
‘–’ | 长虚线 |
‘:’ | 短虚线 |
lines.marker参数取值和意义
取值 | 意义 |
---|---|
‘o’ | 圆圈 |
‘D’ | 菱形 |
‘h’ | 六边形1 |
‘H’ | 六边形2 |
‘-’ | 水平线 |
‘8’ | 八边形 |
‘p’ | 五边形 |
‘,’ | 像素 |
‘+’ | 加号 |
‘None’ | 无 |
‘.’ | 点 |
‘s’ | 正方形 |
‘*’ | 星号 |
‘d’ | 小菱形 |
‘v’ | 一角朝下的三角形 |
‘<’ | 一角朝左的三角形 |
‘>’ | 一角朝右的三角形 |
‘^’ | 一角朝上的三角形 |
‘’ | 竖线 |
‘x’ | X |
###中文字符问题
由于默认的pyplot字体并不支持中文字符,因此需要通过设置
plt.rcParams['font.sans-serif'] = 'SimHei'
来改变绘图时的字体,使图形正常显示中文。由于改变字体后,会导致坐标轴的部分字体无法显示,因此需要同时修改plt.rcParams['axes.unicode_minus'] = 'False'
,使正常显示符号。
散点图,又称散点分布图,利用坐标点的分布形态反映特征间的统计关系的一种图形。值由点在图表中的位置标示,类别由图表中的不同标记标示,通常用于比较跨类别的数据。
散点图可以提供两类关键信息:
pyplot中绘制散点图的函数:
import matplotlib.pyplot as plt
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,
vmin=None, vmax=None, alpha=None, linewidths=None, verts=None,
edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)
常用参数说明:
参数名称 | 说明 |
---|---|
x,y | 接收array。表示x轴和y轴对应的数据 |
s | 接收数值或者一维的array。指定点的大小,若传入一维的array,表示每个点的大小,默认为None |
c | 接收颜色或者一维的array。指定点的颜色,若传入一维的array,表示每个点的颜色,默认为None |
marker | 接收特定string。表示绘图的点的类型。默认为None |
alpha | 接收0~1的小数。表示点的透明度。默认为None |
plot(x1,y1,x2,y2)
plt.plot(*args,**kwargs)
常用参数说明:
参数名称 | 说明 |
---|---|
x,y | 接收array。表示x轴和y轴对应的数据 |
color | 接收特定的string。指定线条的颜色,默认为None |
linestyle | 接收特定string。指定线条类型。默认为’-’ |
marker | 接收特定string。表示绘制的点的类型,默认为None |
alpha | 接收0~1的小数。表示点的透明度,默认为None |
plt.bar(left,height,width=0.8,bottom=None,hold=None,data=None,**kwargs)
常用参数说明:
参数名称 | 说明 |
---|---|
left | 接收array。表示x轴数据 |
height | 接收array。表示x轴所代表数据的数量 |
width | 接收0~1之间的float。指定直方图宽度,默认为0.8 |
color | 接收特定string或者包含颜色字符串的array。表示直方图颜色。 |
import matplotlib.pyplot as plt;
plt.pie( x, # 元组或列表,指定绘图数据
explote=None, # 元组或列表,指定饼图的突出部分,或者切割出某一部分
labels=None, # 元组或列表,为饼图的数据添加相应的标签说明
colors=None, # 元组或列表,指定饼图的填充色
autopct=None, # 格式化字符串,自动添加百分比显示
shadow=False, # 布尔,是否添加饼图的阴影效果
startangle=None, # 数值,设置饼图初始摆放角度,即数据显示分割的起始角度
pctdistance=0.6, # 数值,设置百分比标签与圆心的距离
labeldistance=1.1, # 数值,设置各扇形标签与圆心距离
center=(0,0), # 元组,指定饼图中心点位置
radius=None, # 数值,设置饼图半径大小
counterclock=True, # 布尔,顺时针或逆时针显示数据
wedgeprops=None, # 字典,设置饼图内外边界(粗细,颜色等)
textprops=None, # 字典,设置饼图中文本属性(字体大小,颜色等)
frame=False # 布尔,是否显示饼图背后图框,如果为True,
# 则需同时控制图框x轴、y轴范围和饼图中心位置
)
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)
常用函数说明:
参数名称 | 说明 |
---|---|
x | 接收array。表示用于绘制箱线图的数据。 |
notch | 接收boolean。表示中间箱体是否有缺口 |
sym | 接收特定sting。指定异常点形状。默认为None |
vert | 接收boolean。表示图形是纵向或者横向 |
position | 接收array。表示图形位置。默认为None |
widths | 接收scalar或者array。指定每一个箱线图的标签,默认为None |
labels | 接收array。指定每一个箱线图的交钱,默认为None |
meanline | 接收boolean。表示是否显示均值线,默认为False |
方法1:利用pandas包中的Series.plot()、DataFrame.plot()或DataFrame.boxplot()方法;
方法2:利用seaborn包中的cataplot()或者boxplot(),其中seaborn.boxplot()是seaborn.cataplot()的参数kind='box’时的一种情况;
方法3:利用matplotlib包中axes对象的boxplot()方法。
import numpy as np
import matplotlib.pyplot as plt
dx=0.01;dy=0.01
x=np.arange(-2.0,2.0,dx)
y=np.arange(-2.0,2.0,dy)
X,Y=np.meshgrid(x,y)
def f(x,y):
return(1-y**5+x**5)*np.exp(-x**2-y**2)
C=plt.contour(f(X,Y),8,colors='black') #生成等值线图
plt.contourf(f(X,Y),8)
plt.clabel(C)
plt.colorbar()
#直线绘制
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(y[0,:],y[1,:],y[2,:])
ax.legend()
plt.show()
fig = plt.figure()
ax = fig.gca(projection='3d')
X,Y = np.meshgrid(y[0,:10],y[1,:10])
surf = ax.plot_surface(X,Y,y[2,:10],cmap=cm.coolwarm,linewidth=0, antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()