我试图在直方图上绘制水平和垂直线,这些线将精确地改变x和y轴上的限制。我使用了行(X,Y)函数,但找不到根据图形窗口的参数设置行的有用方法。
答案 0 :(得分: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])
但是你想要能够拖动你的人物的轴鼠标,例如在图形编辑器中使用手/指针按钮。在这种情况下,一种解决方案是使您的图形成为GUI并编写一个回调函数来处理线图,该函数是xlim
和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