Python--plt.text()学习笔记

本文详细介绍了如何使用Python的plt.text()函数在Matplotlib图形中添加文本标签,包括设置位置、字体属性和坐标系转换等。通过示例展示了如何在数据点和坐标轴上添加注释。
部署运行你感兴趣的模型镜像

Python–plt.text()学习笔记(仅供参考)

plt.text()作用:画图时给图中的点 加标签

语法格式

plt.text(x, y, s, fontsize, verticalalignment,horizontalalignment,rotation , kwargs)

其中
(1)x,y:标签添加的位置,特别的,如果你要变换坐标系的话,要用到transform=ax.transAxes参数。
(2)s:标签的符号,字符串格式,比如你想加个“我爱python”,更多的是你标注跟数据有关的主体。
(3)fontsize:加标签字体大小,取整数。
(4)verticalalignment:垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
(5)horizontalalignment:水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等
(6)rotation:标签的旋转角度,以逆时针计算,取整
(7)family :设置字体
(8)style: 设置字体的风格
(9)weight:设置字体的粗细
(10) bbox:给字体添加框, 如 bbox=dict(facecolor=‘red’, alpha=0.5) 等。
(11)string:注释文本内容
(12)color:注释文本内容的字体颜色

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)  # 生成数据
y = np.cos(x)**2 *np.sin(x)      # 应变量取值范围
fig, ax = plt.subplots()
ax.plot(x, y)                # 绘制图像
ax.text(0.,-0.25, 'Text at (0.,-0.25)', fontsize=12)   # 添加文本注释
ax.text(0.5, 0.9, 'Text at (0.5, 0.9) in Axes coords', fontsize=12,transform=ax.transAxes)  # 添加文本注释
ax.text(0.5, 0.1, 'Text at (2, 1) in Data coords', fontsize=12,transform=ax.transData)   # 添加文本注释
plt.show()  # 显示图像

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

``` %matplotlib inline import numpy as np import cv2 #导入OpenCV库,OpenCV是一个功能强大的计算机视觉库,广泛用于图像处理、视频分析、机器学习和深度学习等领域 import matplotlib.pyplot as plt from skimage import data image = data.camera() # 使用 skimage 自带的相机图像 # 加入高斯噪声,噪声的标准差 noise_std = 25 noise = np.random.normal(0, noise_std, image.shape) # image.shape, 生成的噪声数组将与 image 大小相同,便于直接相加 noisy_image = np.clip(image + noise, 0, 255).astype(np.uint8) #对图像添加噪声后进行数值范围的限制和数据类型转换, 无符号8位整数 mean_filtered_image = cv2.blur(noisy_image, (5, 5)) # 应用均值滤波,用滤波核内所有像素的平均值替换中心像素的值 gaussian_filtered_image = cv2.GaussianBlur(noisy_image, (5, 5), 0) # 应用高斯滤波,sigmaX =0控制高斯核在水平方向的权重分布 # 绘制图像 plt.figure(figsize=(15, 5)) # figsize=(width, height),图像的大小,单位是英寸 plt.subplot(1, 4, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis('off') # 坐标轴和刻度线会被隐藏,只显示图像内容 plt.subplot(1, 4, 2) plt.imshow(noisy_image, cmap='gray') plt.title('Noisy Image') plt.axis('off') plt.subplot(1, 4, 3) plt.imshow(mean_filtered_image, cmap='gray') plt.title('Mean Filtered Image') plt.axis('off') plt.subplot(1, 4, 4) plt.imshow(gaussian_filtered_image, cmap='gray') plt.title('Gaussian Filtered Image') plt.axis('off') plt.show()```解释一下代码
最新发布
04-01
<think>好的,我现在需要解释用户提供的这段Python代码。首先,我要仔细阅读代码,理解每一部分的功能,然后按照用户的要求用中文进行逐步解释。用户希望结构清晰,帮助解决问题,同时要遵循系统级指令,比如正确使用LaTeX格式和中文回答。 首先,代码开头有%matplotlib inline,这是Jupyter Notebook的魔法命令,用于在笔记本内嵌显示图表。接下来导入了numpy、cv2、matplotlib.pyplot和skimage的data模块。用户可能对这些库的作用不太清楚,需要解释它们各自的用途。 然后,使用skimage自带的相机图像,生成一个灰度图像。接着添加高斯噪声,这里需要解释噪声的标准差、np.random.normal函数的作用,以及np.clip的使用原因。用户可能对图像处理中的噪声添加过程不太熟悉,需要详细说明。 接下来是均值滤波和高斯滤波的应用,分别使用cv2.blur和cv2.GaussianBlur函数。这里需要解释两种滤波方法的区别,比如均值滤波是计算核内像素的平均值,而高斯滤波则是加权平均,权重由高斯函数确定。用户可能想了解为什么选择这两种滤波以及它们的参数含义,比如核大小(5,5)和sigmaX=0的影响。 绘图部分使用了matplotlib,创建了四个子图显示原图、加噪后的图像、均值滤波结果和高斯滤波结果。需要解释plt.subplot的参数,如何排列四个图像,以及设置标题、关闭坐标轴的方法。用户可能对图像显示布局和参数设置感兴趣。 在解释过程中,要确保行内数学表达式用$...$格式,比如高斯噪声的公式$N(0, \sigma^2)$,独立公式用$$...$$,比如滤波核的权重计算。同时,检查LaTeX语法是否正确,避免错误。 需要逐步分解代码,从导入库、加载图像、添加噪声、应用滤波到显示结果,每一步都详细说明其作用和实现方法。确保回答结构清晰,逻辑连贯,帮助用户理解图像去噪的基本流程和不同滤波方法的效果差异。 可能存在的疑问点包括:为什么使用np.clip转换数据类型?OpenCV和matplotlib在处理图像时的通道顺序是否有差异(这里因为是灰度图可能没有问题)?高斯滤波中sigmaX=0的含义是什么?需要确认这些细节并在解释中提及。 最后,总结代码的目的,即展示如何用均值和高斯滤波去除高斯噪声,比较两者的效果。确保用户能够通过代码解释理解图像处理的基本步骤和滤波方法的应用。</think>以下是对代码的逐步解释: $\textcolor{blue}{1. \text{库导入与初始化}}$ ```python %matplotlib inline # Jupyter Notebook魔法命令,用于内嵌显示图表 import numpy as np # 科学计算库,处理多维数组 import cv2 # OpenCV库,提供计算机视觉相关算法 import matplotlib.pyplot as plt # 绘图库 from skimage import data # 图像处理库,提供测试图像 ``` $\textcolor{blue}{2. \text{加载基础图像}}$ ```python image = data.camera() # 获取自带相机灰度图像(512x512) ``` $\rightarrow$ 使用`skimage`的标准测试图像,便于算法验证 $\textcolor{blue}{3. \text{添加高斯噪声}}$ ```python noise_std = 25 # 定义噪声标准差σ=25 noise = np.random.normal(0, noise_std, image.shape) # 生成$\mathcal{N}(0,σ^2)$分布的噪声 noisy_image = np.clip(image + noise, 0, 255).astype(np.uint8) # 限制像素值范围并转换数据类型 ``` $\rightarrow$ 噪声模型:$n(x,y) \sim \mathcal{N}(0,σ^2)$ $\rightarrow$ `np.clip`确保像素值在0-255之间(8位灰度图) $\rightarrow$ `.astype(np.uint8)`转换为OpenCV兼容的格式 $\textcolor{blue}{4. \text{图像滤波处理}}$ ```python # 均值滤波(5x5邻域) mean_filtered_image = cv2.blur(noisy_image, (5, 5)) # 高斯滤波(5x5核,σ=0自动计算) gaussian_filtered_image = cv2.GaussianBlur(noisy_image, (5, 5), 0) ``` $\text{均值滤波}$: $$ g(x,y) = \frac{1}{25}\sum_{i=-2}^{2}\sum_{j=-2}^{2}f(x+i,y+j) $$ $\text{高斯滤波}$: $$ G(x,y) = \frac{1}{2πσ^2}e^{-(x^2+y^2)/(2σ^2)} $$ $\rightarrow$ 当sigmaX=0时,根据核尺寸自动计算σ值(标准计算公式为σ=0.3*((ksize-1)*0.5-1)+0.8) $\textcolor{blue}{5. \text{可视化对比}}$ ```python plt.figure(figsize=(15, 5)) # 创建15英寸宽、5英寸高的画布 # 原始图像 plt.subplot(1,4,1) # 1行4列布局,第1个位置 plt.imshow(image, cmap='gray') plt.title('Original Image') # 加噪图像 plt.subplot(1,4,2) plt.imshow(noisy_image, cmap='gray') plt.title('Noisy Image') # 均值滤波结果 plt.subplot(1,4,3) plt.imshow(mean_filtered_image, cmap='gray') plt.title('Mean Filtered') # 高斯滤波结果 plt.subplot(1,4,4) plt.imshow(gaussian_filtered_image, cmap='gray') plt.title('Gaussian Filtered') plt.axis('off') # 隐藏所有子图的坐标轴 plt.show() ``` $\textcolor{blue}{6. \text{效果对比}}$ $\bullet$ 均值滤波:有效抑制噪声但会产生模糊 $\bullet$ 高斯滤波:保留更多边缘信息,降噪效果更自然 $\bullet$ 通过标准差参数可调节滤波强度(σ越大平滑效果越强) $\textcolor{blue}{7. \text{参数选择建议}}$ $\bullet$ 核尺寸越大,去噪能力越强但细节损失越多 $\bullet$ 高斯滤波的σ值与核尺寸的关系应满足:$σ = 0.3*(k/2 -1) + 0.8$(k为核尺寸) $\bullet$ 实际工程中常使用3×3或5×5的滤波核
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值