0

我试图在直方图上绘制水平线和垂直线,这将准确地改变 x 和 y 轴上的限制。我正在使用 line(X,Y) 函数,但找不到根据图形窗口的参数设置线条的有用方法。

4

1 回答 1

1

我不完全清楚你想要什么,但这是我认为你想要的最简单的答案:

制作样本直方图

y = randn(100,1);
hist(y,10)

获取 x 和 y 轴的当前范围

xlimits = get(gca, 'XLim');
ylimits = get(gca, 'YLim');

计算单个数值以绘制水平线。您需要将其替换为轴范围的特定函数

halfpt = ((ylimits(2)-ylimits(1))/2) + ylimits(1);
line(xlimits, [halfpt halfpt])

我不确定,但是从您的评论中,我怀疑您没有以编程方式更改轴,set(gca,'Xlim', [0 10])但是您希望能够用鼠标拖动图形的轴,例如用那只手图编辑器中的 /pointer 按钮。在这种情况下,一种解决方案是使您的图形成为一个 GUI,并编写一个回调函数来处理作为xlimand的函数的线图ylim。这是一个始终将线保持在轴中间的示例,无论它们如何拖动:

function myGUI
figure('WindowButtonMotionFcn',@myCallback)
y = randn(100,1);
hist(y,10)

function myCallback(src,eventdata)
xlimits = get(gca, 'XLim');
ylimits = get(gca, 'YLim');
halfpt = ((ylimits(2)-ylimits(1))/2) + ylimits(1);

lh = findall(gcf,'Type','Line');
delete(lh);
myline = line(xlimits, [halfpt halfpt])

end

end
于 2013-07-18T17:28:15.903 回答