我有这个情节
我需要在x轴上的一个点上做一个直的垂直线,用户输入,显示交叉点的坐标我的情节垂直线。
如何在MATLAB中完成?
例如:用户输入1020然后将在1020处绘制一条直线垂直线,该线在某一点符合绘图,并以某种方式显示该点的坐标。
答案 0 :(得分:5)
执行此操作的一种方法是使用GINPUT功能以图形方式使用鼠标选择一个点。假设您绘制的数据存储在变量data
中,以下代码应该做您想要的事情。
set(gca,'XLimMode','manual','YLimMode','manual'); % Fix axes limits
hold on;
[x,y] = ginput(1); % Select a point with the mouse
x = round(x); % Round x to nearest integer value
y = data(x); % Get y data of intersection
plot([x x],get(gca,'YLim'),'k--'); % Plot dashed line
plot(x,y,'r*'); % Mark intersection with red asterisk
disp('Intersection coordinates:');
disp([x y]); % Display the intersection point
以上假设图表的x值只是您正在绘制的数据数组的索引,从上图所示的图表中可以看出这种情况。
答案 1 :(得分:3)
尝试类似:
x = 1020;
% plot a vertical line
ylimits = get(gca, 'YLim');
hold on;
plot([x x], ylimits, 'k');
% mark the intersection with the plot
plot(x, data(x), 'ro');
annot = sprintf('Intersection: x=%f, y=%f', x, data(x));
text(x, data(x), annot);
代码未经过测试,并假设您的数字是当前的数字,绘制的数据存储在数组“数据”中,原始绘图完成时未指定额外的x向量。
答案 2 :(得分:0)
您还可以使用可从以下网址下载的hline
和vline,
函数:http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline
它们几乎和你一样。