网站建设发展情况,网页设计模板网站,做个手机app软件需要多少钱,苏州seo公司 翼好Matplotlib基础
Matplotlib是一个用于绘制静态、动态和交互式图表的Python库#xff0c;广泛应用于数据可视化领域。它是Python中最常用的绘图库之一#xff0c;提供了多种功能#xff0c;可以生成高质量的图表。
Matplotlib是数据分析、机器学习等领域数据可视化的重要工…Matplotlib基础
Matplotlib是一个用于绘制静态、动态和交互式图表的Python库广泛应用于数据可视化领域。它是Python中最常用的绘图库之一提供了多种功能可以生成高质量的图表。
Matplotlib是数据分析、机器学习等领域数据可视化的重要工具广泛应用于科研、教学、报告等多种场景。
4.1 绘图基本函数
Matplotlib参数配置
import matplotlib.pyplot as plt
#运行时配置参数
# rcParams : runtime configuration Parameters
#如果浏览器不显示图片就需要加上这句话
%matplotlib inline
#让图片中可以显示中文
plt. rcParams[font.sans-serif] SimHei
#让图片中可以显示负号
plt.rcParams[axes.unicode_minus] False
#支持svg矢量图
%config Inlinebackend.figure_format svgplt.plot()函数
# 用于绘图
# 1.需要传入相关的数据plt.plot(x,y)
# 2.颜色(color)b(蓝色g(绿色)r(红色)c(青色m(品红)y(黄色)k(黑色)w(白色
# 3.线条样式(ls--)-,--,-.,:,.
# 4.plt.plot() 返回的是一个 matplotlib.lines.Line2D 实例这个对象表示了你所绘制的图形中的一条线。这个返回值可以用来进一步修改或查询该线的属性例如颜色、线型、标签等。
nnp.arange(-10,10,0.1)
plt.plot(n,n**2, colorr, ls--)
plt.show() #展示当前绘图下次重新绘图绘图画布
plt.figure(figsize(5,5)) #figsize(5,5)画布大小5行5列
plt.figure(dpi100) #分辨率表示每英寸多少个点
plt.figure(facecolorg) #画布的颜色
plt.grid() #绘制网格
plt.plot(n,np.sin(n))4.2 多图布局与图形嵌套
4.2.1 多图布局
plt.subplot()函数plt.subplot(nrows, ncols, index) 是用来创建一个 nrows 行 ncols 列的子图网格并指定当前子图的位置index
# 绘制4个子图
plt.figure(figsize(8,4))
# 子图1
ax1plt.subplot(2,2,1) #两行两列第一个子图
ax1.plot(n, np.sin(n))
ax1.set_title(子图1)
# 子图2
ax2plt.subplot(2,2,2) #两行两列第二个子图
ax2.plot(n, np.sin(n))
ax2.set_title(子图2)
# 子图3
ax3plt.subplot(2,2,3) #两行两列第三个子图
ax3.plot(n, np.sin(n))
ax3.set_title(子图3)
# 子图4
ax4plt.subplot(2,2,4) #两行两列第四个子图
ax4.plot(n, np.sin(n))
ax4.set_title(子图4)plt.tight_layout() #自动调整紧凑布局# 绘制三个子图
plt.figure(figsize(8,4))
# 子图1
ax1plt.subplot(2,2,1) #两行两列第一个子图
ax1.plot(n, np.sin(n))
ax1.set_title(子图1)
# 子图2
ax2plt.subplot(2,2,2) #两行两列第二个子图
ax2.plot(n, np.sin(n))
ax2.set_title(子图2)
# 子图3
ax3plt.subplot(2,1,2) #两行一列第三个子图
ax3.plot(n, np.sin(n))
ax3.set_title(子图3)
# plt.subplot(2, 1, 1) 是在 第一行第一列 创建子图适用于只有一个子图时使用。
# plt.subplot(2, 1, 2) 是在 第二行第一列 创建子图这样可以确保每个子图在不同的行中显示不会发生重叠**plt.subplots()**一次性构建多个子图
fig, axesplt.subplots(3,3) #创建一个三行三列的画布
axes1, axes2, axes3axes
axes1_1, axes1_2, axes1_3axes1
axes2_1, axes2_2, axes2_3axes2
axes3_1, axes3_2, axes3_3axes3(Figure size 640x480 with 9 Axes,array([[Axes: , Axes: , Axes: ],[Axes: , Axes: , Axes: ],[Axes: , Axes: , Axes: ]], dtypeobject))fig.set_figwidth(10)
fig.set_figheight(10)
axes1_1.plot(n, np.sin(n))
axes1_2.plot(n, np.cos(n))
axes1_3.plot(n, np.tan(n))
axes2_1.plot(n, np.sin(n))
axes2_2.plot(n, np.sin(n))
axes2_3.plot(n, np.sin(n))
axes3_1.plot(n, np.sin(n))
axes3_2.plot(n, np.sin(n))
axes3_3.plot(n, np.sin(n))4.2.2 图形嵌套
add_subplot(nrows, ncols, index)
figplt.figure(figsize(8,4))
x np.arange(-2*np.pi, 2*np.pi, 0.1)
y np.sin(x)
axes1fig.add_subplot(1,1,1) #画布分为一行一列的第一个子图
axes1.plot(x, y)
axes2fig.add_subplot(2,2,1) #画布两行两列的第一个子图(左上角相当于嵌套到子图1中)
axes2.plot(x, y)Tip:
subplot在多次调用时会根据指定的 nrows、ncols 和 index 来“覆盖”前一个子图图形窗口会被清空并重新绘制。
add_subplot不会覆盖之前的图形它是将一个新的子图添加到已有的图形窗口中。plt.axes([left, bottom, width, height])
# [left, bottom, width, height]:距左边框的距离距底边框的距离宽度高度
figplt.figure(figsize(8,4))
plt.plot(x, y)
axesplt.axes([0.5, 0.2, 0.2, 0.2])
axes.plot(x, y)4.2.3 双轴显示
plt.figure(figsize(8,3))
axesplt.gca()#获得当前轴域
plt.plot(x, y)axes2axes.twinx()#和子图1共用x轴
axes2.plot(x,np.cos(x),cr)4.3 绘图属性
1.图例legend()
plt.figure(figsize(8,3))
x np.arange(-2*np.pi, 2*np.pi, 0.1)
# 1.通过lable属性标明图例的名字
plt.plot(x, np.sin(x), labelsin)
plt.plot(x, np.cos(x), labelcos)
# 2.通过legend图例属性进行显示
plt.legend()# legend()的其他属性
plt.figure(figsize(8,3))
x np.arange(-2*np.pi, 2*np.pi, 0.1)
# 1.通过lable属性标明图例的名字
plt.plot(x, np.sin(x), labelsin)
plt.plot(x, np.cos(x), labelcos)
# 2.通过legend图例属性进行显示
plt.legend([sin函数,cos函数],fontsize8, #字体大小loclower left, #设置位置bbox_to_anchor[0,1,1,1] #设置具体位置(x,y,width,heigh)
)2.线条属性 c:color 颜色
ls:linestyle样式
lw:linewidth宽度
alpha透明度
marker标记
mfc:markerfacecolor标记的背景颜色
mec:markeredgecolor:标记边框颜色
mew:markeredgewidth:标记边框粗细plt.figure(figsize(8,3))
x np.arange(-2*np.pi, 2*np.pi, 0.1)
plt.plot(x, np.sin(x), labelsin, colorred, linestyle--, lw1, markero, mfcg, markeredgecolory,alpha0.5)
plt.plot(x, np.cos(x), labelcos, colorgreen, linestyle:, linewidth2, markerp, mfcr, mecy, mew2,alpha1)
plt.legend()3.坐标刻度和坐标范围
plt.xticks()与plt.yticks()设置坐标刻度
plt.figure(figsize(8, 3))
x np.arange(-2*np.pi, 2*np.pi, 0.1)
plt.plot(x, np.sin(x), labelsin, colorred, linestyle--, lw1, markero, mfcg, markeredgecolory, alpha0.5)
plt.plot(x, np.cos(x), labelcos, colorgreen, linestyle:, linewidth2, markerp, mfcr, mecy, mew2, alpha1)# 设置x轴刻度和标签
plt.xticks(ticks[-2*np.pi, -np.pi, 0, np.pi, 2*np.pi], # 刻度位置labels[-2π, -π, 0, π, 2π], # 替换的刻度标签fontsize10,colorblue,haright # 水平对齐方式
)
plt.yticks(ticks[-1, 0, 1])
plt.legend()
plt.show()plt.xlim()和plt.ylim()或plt.axis(设置坐标的范围
plt.xlim(-10, 10) #x的范围设置为-10~10
plt.ylim(-2, 2) #y的范围设置为-2~2
or
plt.axis([-10, 10,-2, 2]) #xmin, xmax, ymin, ymax:同时设置plt.axis()中有option属性也可以对坐标进行一些特殊操作
auto自动调整坐标轴范围。
equal确保 x 轴和 y 轴的比例一致。
off关闭坐标轴显示。
tight紧缩坐标轴范围紧贴数据边界。
[xmin, xmax, ymin, ymax]手动指定坐标轴的范围。
scaled保持坐标轴的比例一致适用于不等尺度的情况。
square强制坐标轴显示为正方形。4.标题标签网格线
#设置标题
plt.title(正弦曲线, loccenter, y1.1)
plt.suptitle(三角函数的图像, x0.51, y1.1) #x,y调整标签的位置#设置标签
plt.xlabel(sin(x)函数图像)
plt.ylabel(ysin(x)) #默认rotation角度为90°
plt.ylabel(ysin(x), rotation0, haright) #可以通过rotation0调整水平ha设置为右对齐#设置网格
plt.grid(ls--, lw1, cgray, axisx) #axis可以设置显示哪个轴文本注释标注
# 文本plt.text()
plt.figure(figsize(8, 3))
x np.arange(0, 2*np.pi, 0.1)
plt.plot(x, np.sin(x))
plt.tight_layout()plt.text(0.5*np.pi-0.2, 0.8, 最高点)
plt.text(x1.5*np.pi, #文本的横坐标y-0.8, #文本的纵坐标s最低点, #文本信息hacenter, #水平居中vacenter, #垂直居中colorred #文本颜色
)# 注释标注
plt.figure(figsize(8, 3))
x np.arange(0, np.pi, 0.1)
plt.plot(x, np.sin(x))
plt.tight_layout()plt.annotate(text最高点, # 注释文本为最高点xy(0.5 * np.pi, 1), # 箭头指向坐标(0.5 * np.pi, 1)即图中的最高点xytext(0.5 * np.pi - 0.2, 0.55), # 注释文本位置稍微偏离箭头arrowprops{ # 配置箭头的样式width: 1, # 设置箭头的宽度为1headwidth: 3, # 设置箭头头部的宽度为3facecolor: green # 设置箭头的颜色为绿色}
)保存图片
fig.savefig(正弦函数.png)