如何在情节的一个特定点设置标记(请看图片)?

10800浏览量(过去30天)
本杰明·马
本杰明·马 2014年2月27日

0评论

登录评论。

接受的答案

米金
米金 2014年2月27日
编辑:MathWorks支金宝app持团队 2020年11月4日
本杰明,添加
持有
情节(x_pos y_pos,的r *
你的代码。 (x_pos y_pos) 是需要标记的数据点。如果你有
x = 0:0.1:π;
y = sin (x);
您可以使用
情节(x, y)
持有
情节(x (10), y (10),的r *%表示x和y的第10个数据点
从R2019a ,可以固定多个数据提示。当您将鼠标悬停在图形窗口中的数据点上时,数据提示会临时出现。若要显示持久(固定)数据提示,请单击一个或多个数据点。
有关“交互式探索绘制数据”的更多信息,请参阅以下文件:

4评论

显示 1年长的评论
马特Kindig
马特Kindig 2014年2月27日
确定。不过,首先需要定义情节对象。应该像这样:
h = plot(NaN, NaN,的r *);定义图形对象,但不渲染任何东西。
集(h,“Xdata”, x (10),“YData”y (10));%马克10点
暂停(5);几秒钟后…
集(h,“XData”, x (20),“YData”y (20));%改为20分。
Vijay shankar曾经
Vijay shankar曾经 2021年1月4日
嗨,米沙,当我试图用小数点来标记点时,我出错了。
沃尔特·罗伯森
沃尔特·罗伯森 2021年1月4日
你能详细解释一下用小数点画点的意思吗?比如,你想做什么
集(h,“XData”x (20.3),“YData”y (20.3));%分数为20.3分。

登录评论。

更多的答案(2)

格雷格
格雷格 2017年12月6日
编辑:格雷格 2017年12月6日
一个月有7k的浏览量,我很惊讶这个没有更新。
从R2016b开始,有一个 MarkerIndices 财产。而不是另一个答案:
情节(x, y);
持有
情节(x (10), y (10),的r *);
现在简单地使用:
h =情节(x, y,“MarkerIndices”10);
如果你已经储存了把手,可以随时移动标记 h
h.MarkerIndices = 5:长度(x);

1评论

MathWorks支金宝app持团队
MathWorks支金宝app持团队 2018年11月27日
此外,您可以指定“o-”线样式,这将创建实线和标记。您还可以指定标记属性,例如面颜色和边缘颜色。
x = linspace(0,π,30);
y = sin (x);
p =情节(x, y,“啊——”“MarkerFaceColor”“红色”“MarkerEdgeColor”“红色”“MarkerIndices”, 10)

登录评论。


纳克
纳克 2017年1月9日
您好,是否可以在不写代码的情况下在图中标记,并在图编辑器中将标记放在图中,
对于正弦曲线,我只有x数据,没有y数据,但我需要在曲线上标记,这意味着我要给出x值,基于x值它应该在曲线上恰好在正弦曲线上,

1评论

沃尔特·罗伯森
沃尔特·罗伯森 2017年1月9日
对于R2014b或之后的版本(我需要提前检查一下;我看到一些参考在2012年的时间框架)你可以使用 数据刷 .点击图中的画笔,然后你可以点击一个点来标记它。
只给出x来标记一个特定的位置,那么
x_to_mark = SomeSpecificXValue;
all_lines = findobj (gca),“类型”“行”);
number_of_marks = 0;
where_to_mark = [];
K = 1: length(all_lines)
this_line = all_lines (K);
this_xdata =得到(this_line,“XData”);
如果X_to_mark < min(this_xdata) | X_to_mark > max(this_xdata)
继续这条线不能张成x
结束
x_diff = diff (this_xdata);
如果isempty (x_diff)
流('skip line #%d that is single point\n'、K);
elseif| All (x_diff < 0)
%它是单调的,做插值是安全的
this_ydata =得到(this_line,“YData”);
Y_to_mark = interp1(this_xdata, this_ydata, x_to_mark);
Number_of_marks = Number_of_marks + 1;
Where_to_mark (number_of_marks,:) = [x_to_mark, y_to_mark];
其他的
流('跳过行#%d未排序x数据\n'、K);
结束
结束
如果number_of_marks = = 0
流(' x不在一条线上,我们可以处理\n');
其他的
持有
情节(where_to_mark (: 1) where_to_mark (:, 2),的r *);
结束
这可能比你想象的要长很多。你没有提供我们可能用来缩短它的信息。例如,如果您知道只有一行,并且在绘制时x已经排序,并且要标记的x值肯定在范围内,那么代码可以缩短得多。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

翻译的