MATLAB - 绘制矩形
MATLAB - 在绘图中绘制矩形
Section titled “MATLAB - 在绘图中绘制矩形”在 MATLAB 中,rectangle 函数是一个多功能工具,用于在您的绘图中添加矩形。这对于各种可视化任务至关重要,例如突出显示数据中特定的感兴趣区域、图形注释或构建基本的图形用户界面(GUI)。了解如何控制矩形的位置、大小和外观是 MATLAB 图形中的一项基本技能。
现代语法与用法
Section titled “现代语法与用法”rectangle 函数创建一个 Rectangle 对象。您可以在创建时使用名称-值对控制其属性,也可以在以后使用对象句柄进行修改。现代语法具有高度可读性和灵活性。
% 推荐:创建一个矩形并存储其句柄r = rectangle('Position', [x, y, w, h])
% 使用名称-值对指定属性r = rectangle('Position', pos, 'FaceColor', 'r', 'EdgeColor', 'b')
% 添加曲率以创建圆角r = rectangle('Position', pos, 'Curvature', [h_curv, v_curv])
% 在特定的坐标轴句柄 'ax' 中绘制r = rectangle(ax, 'Position', pos)
% 使用现代的 Name=Value 语法(R2021a 及更高版本)r = rectangle(Position=pos, FaceColor="red")'Position', [x, y, w, h]:这是最重要的属性。它是一个四元素向量,其中[x, y]定义了左下角的坐标,[w, h]分别定义了宽度和高度。- 图形句柄 (
r):将rectangle函数的输出存储到一个变量(例如r)中,您将获得一个图形对象的句柄。此句柄对于在矩形绘制之后修改其属性至关重要。 'Curvature', [h_curv, v_curv]:此属性允许您创建圆角矩形。曲率值范围从0(无曲线)到1(最大曲线)。值为[1, 1]可创建椭圆或圆形。- 目标坐标轴 (
ax):默认情况下,rectangle会在当前坐标轴上绘制(通过gca获取)。要在特定的子图或图窗中绘制,您必须将坐标轴句柄作为第一个参数传递。
关键矩形属性
Section titled “关键矩形属性”您可以使用矩形的属性来自定义其外观。使用点表示法(例如,r.FaceColor = 'blue')在矩形句柄上访问和修改它们。
颜色与样式属性
Section titled “颜色与样式属性”| Property | Description | Example Values |
|---|---|---|
FaceColor | 设置矩形的内部填充颜色。 | 'red'(红色), 'g'(绿色), '#FFC0CB'(十六进制颜色), [0.1 0.5 0.9](RGB三元组), 'none'(无) |
EdgeColor | 设置矩形边框的颜色。 | 'blue'(蓝色), 'k'(黑色), '#000000'(十六进制颜色), [0 0 0](RGB三元组), 'none'(无) |
FaceAlpha | 控制填充颜色的透明度。0 表示完全透明,1 表示完全不透明。 | 一个介于 0 到 1 之间的标量值。默认值为 1。 |
LineWidth | 指定边框线的粗细(以点为单位)。 | 一个正标量值。默认值为 0.5。 |
LineStyle | 定义边框线的样式。 | '-'(实线), '--'(虚线), ':'(点线), '-.'(点划线), 'none'(无) |
| Property | Description | Values |
|---|---|---|
Visible | 控制矩形是显示还是隐藏。 | 'on'(默认)或 'off' |
HandleVisibility | 控制对象的句柄是否在其父级子对象列表中可见。对于管理复杂绘图很重要。 | 'on'(默认), 'callback', 'off' |
示例 1:带样式的基本矩形
Section titled “示例 1:带样式的基本矩形”此示例创建一个基本绘图并添加一个带样式、半透明的矩形。
% 创建一个新的图窗和坐标轴figure;axis([0 10 0 10]); % 设置绘图范围hold on; % 允许在同一坐标轴上绘制多个对象grid on;
% 定义矩形属性pos = [2 2 5 3]; % [x, y, 宽度, 高度]
% 绘制矩形并存储其句柄r = rectangle('Position', pos, ... 'FaceColor', [0.5 0.7 1.0], ... % 浅蓝色 'EdgeColor', 'b', ... 'LineWidth', 2, ... 'LineStyle', '--');
% 添加标签text(pos(1), pos(2)-0.5, 'Styled Rectangle');
hold off;title('Basic Rectangle with Styling');
% 您可以使用句柄 'r' 稍后修改它pause(2); % 等待 2 秒r.FaceAlpha = 0.5; % 使其半透明title('Updated with Transparency');预期输出: 将出现一个绘图窗口,其中包含一个虚线边框矩形。两秒后,矩形将变为半透明。
示例 2:数据注释
Section titled “示例 2:数据注释”一个常见的用例是在数据绘图中突出显示特定区域。
% 生成一些示例数据x = linspace(0, 2*pi, 100);y = sin(x) + 0.1*randn(1, 100);
% 创建绘图figure;plot(x, y);hold on;title('Highlighting a Region of Interest');xlabel('Time (s)');ylabel('Amplitude');
% 突出显示信号在 pi/2 和 3*pi/2 之间为正的区域rectangle('Position', [pi/2, 0, pi, 1.2], ... 'FaceColor', [1 0.9 0.9], ... % 浅红色 'EdgeColor', 'none', ... 'FaceAlpha', 0.5);
% 添加文本注释text(pi, 0.5, 'Area of Interest', 'HorizontalAlignment', 'center');
hold off;预期输出: 显示一个正弦波绘图,其中一个半透明的红色矩形突出显示波形的峰值区域。
最佳实践与常见陷阱
Section titled “最佳实践与常见陷阱”- 始终使用
hold on:在现有绘图上绘制矩形之前,请使用hold on以防止绘图被清除。 - 管理坐标轴限制:
rectangle函数不会自动调整绘图的坐标轴限制。您可能需要使用axis()或xlim()/ylim()手动设置它们,以确保您的矩形可见。 - 完美的正方形和圆形:要确保等宽高的矩形显示为正方形,请使用
axis equal。同样,这将使Curvature=[1,1]的矩形显示为完美的圆形。 - 性能:在绘制许多矩形的循环中,使用向量化输入一次性创建所有矩形,可以比在循环中逐个创建它们显著更快。