1. 问题描述
这是一个没有难度,但经常出现的问题。
在MATLAB绘图中,除了基本的数据绘图,我们往往需要绘制辅助性直线,例如:
mark
2. 技术背景
MATLAB中绘制这样的直线很简单,只需确定两个点即可。但是要确定贯通方向的坐标范围,较为繁琐,还需要根据主体数据进行调整。
3. 解决方案
绘制完主体图像后,直接从axes对象中提取坐标范围,用于确定绘制直线的数据。
4. 实施示例
绘图程序代码如下,可以在任意图像之后直接运行,绘制辅助直线。
function xline(position,lineSpec)
% 题目:输入MATLAB默认颜色向量
% 输入:
% position -- [x y],[1 0]在x=1处绘制竖线,[0 1]在y=1处绘制横线
% lineColor -- 'r'
% 输出:颜色向量
% 示例:
% xline([0 6],'r-')
if nargin < 2 % 自动补充lineSpec
lineSpec = 'k-.';
end
if position(1) == 0 % 横线
y0 = position(2)*[1 1]';
x0 = get(gca,'Xlim')';
else % 竖线
x0 = position(1)*[1 1]';
y0 = get(gca,'Ylim')';
end
hold on
plot(x0,y0,lineSpec); % 绘制
end % end of line
以一个正弦图像为例,绘制要在 x = pi/2,y = sin(pi/4)的位置绘制直线,只需要:
clc,clear,close all
t = 0:pi/40:2*pi; % 基本数据
y = sin(t);
figure
plot(t,y) % 正弦曲线
xline([pi/2,0]) % 竖向直线
xline([0,sin(pi/4)]) % 横向直线
mark
5. 常见问题
无
本文用时 10 m