【问题标题】:How to Create Data Markers on a MatLab Plot That Have Lines Extending to X/Y Axis?如何在 MatLab 绘图上创建线延伸到 X/Y 轴的数据标记?
【发布时间】:2016-02-19 00:36:11
【问题描述】:

我正在尝试在 MatLab 中创建一个指定函数的图,该函数具有特定的数据标记,这些标记在 X/Y 轴上具有与该特定标记相对应的下拉线(最好是虚线)。

下面是我的 MatLab 代码,仅用于绘图和标记:

x = 0:4000;
y = 1 - exp(-(power(((x-900)/1015.54),2)));
xmarkers = [1800,2000];
ymarkers = 1 - exp(-(power(((xmarkers-900)/1015.54),2)));

plot(x,y,'b',xmarkers,ymarkers,'b*');

这导致以下情节:

我设想这样一个图表,最好在行尾为指定的 X/Y 值对添加自动标签:

我的核心问题是:这可能吗?如果是这样,人们将如何进行编码?我知道我可以通过自己在绘图中添加线条来手动管理它,但这对于大量标记是不可行的。

【问题讨论】:

    标签: matlab plot matlab-figure


    【解决方案1】:

    您可以定义一个绘制标记的函数:

    function draw_marker(x, y)
    
        hold on
    
        plot(x, y, 'b*')
    
        % plot coordinates as text
        str = sprintf('(%d, %d)', x, y);
        text(x, y, str)
    
        plot([0, x], [y, y], 'k-.')
        plot([x, x], [0, y], 'k-.')
    
    end
    

    然后你可以像这样创建你的情节:

    plot(x,y,'b');
    
    draw_marker(xmarkers(1), ymarkers(1))
    draw_marker(xmarkers(2), ymarkers(2))
    

    当然,如果您将图形句柄作为参数传递会更好,但上述方法有效。

    【讨论】:

    • 太棒了。谢谢你。你介意解释一下在函数/中调用 plot 到底发生了什么吗?另外,顺便说一句,是否可以在每行的末尾标记 x/y 的值?
    • plot 只是绘制到当前图形。 hold on 语句保持旧图可见,而不是用每个新的 plot 调用替换它们。
    • @AndrewC 我不确定在现有刻度标签上添加刻度标签有多容易,但我编辑了答案以标记图中的标记,我希望这也很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多