在Matlab中围绕原始数据绘制附加线而无需调整绘图窗口

我在Matlab中有一个数据散点图,还有一个水平线形图,该线形图将这些数据的两个子组划分了-全部都在同一图上。我已经使用hold on命令分别绘制了这两个实体。

理想情况下,我希望绘图窗口能够自动调整为仅散点图数据,并且希望在所有情况下我绘制的水平线都可以简单地延伸到屏幕之外。有没有简单的方法可以做到这一点?

当我更改水平线的界限时,图形窗口将移动以容纳这些点,从而使我真正感兴趣的散点图数据的视图倾斜。

示例:

% central line segment
boundary_line = plot(csv_results.data(:,9),csv_results.data(:,10));

% negative extension of line segment off screen
line_negext = plot([-10,csv_results.data(1,9)],[csv_results.data(1,10),10)]);

% positive extension of line segment off screen
line_posext = plot([10,csv_results.data(6,[csv_results.data(6,10)]);

% scatterplot data of interest
scatt_data = plot(csv_results.data(:,3),4));

更新:我的问题是,如上面的代码所示,我需要在不同的y值处绘制两个线段,这些线段继续为正无穷大,并链接到中间的现有图。如果我使用yline,我可以简单地画一条水平线-如果我使用xlim,则可能会为后续运行裁剪数据。

WOAI88521 回答:在Matlab中围绕原始数据绘制附加线而无需调整绘图窗口

Image showing horizontal line

如果您想将轴调整到更狭窄的部分(缩小),则xlim()ylim()完成任务。 yline()绘制的水平线将保持不变,xline()绘制的垂直线将保持不变。请注意,xline()yline()应该适用于R2018b及更高版本。

% MATLAB R2019a
% Sample Data
n = 10;
X1 = 5*rand(n,1);
Y1 = 5*rand(n,1);
X2 = 5 + 5*rand(n,1);
Y2 = 5 + 5*rand(n,1);

figure,hold on
yline(5) 
scatter(X1,Y1,'bo')
scatter(X2,Y2,'rd')
scatter(X1,'ks')
xlim([0 5])

请注意,为更大的x轴范围调用xlim()也会扩大水平线。

xlim([-1,12])

如果您在范围之外的xlim()之后绘制新数据,则该绘制不会自动调整。但是,如果在调用xlim()之前这样做,则水平线将扩大。请尝试下面的示例。

figure,'ks')

然后立即执行

scatter(100*rand(n,1),Y1)

,然后看到水平线已扩展为覆盖新的更长的x轴。 Image showing expanded horizontal line


发布此答案后,我发现:How to draw horizontal and vertical lines in MATLAB?

本文链接:https://www.f2er.com/2904854.html

大家都在问