1

我有以下图,其中标记指定平均值,误差线标记最小值和最大值。如您所见,很难区分不同数据点之间的差异,因为它们重叠。

我删除了图例,这样可以更容易地看到这个情节。

我的想法是将图分成两个单独的图,1 的数据从 0 到 0.25,另一个图的数据从 0.35 到 0.6,但我不确定这是否会大大改善事情或看起来很糟糕.

我希望一些经验丰富的 MATLAB 用户对如何修改我的绘图有一些想法(例如更改轴限制、使用轴正方形或轴图像,或其他我不知道的东西)。

在此处输入图像描述

我什至尝试使用命令 set(gca,'XScale','log'); 切换到日志图;

但这是我的结果: 在此处输入图像描述

4

2 回答 2

3

这与 Try Hard 在评论中建议的内容一致。
以下代码是一个复制/粘贴示例,用于创建类似于您似乎拥有的数据集,绘制它,然后在空白区域中添加一个缩放图:

% generate example data-set
% for the sake of simplicity, the x-data will be ascending

X(1:5,1) = sort(rand(5,1)*0.05+0.1);
X(6:7,1) = sort(rand(2,1)*0.1+0.5);

Y(1:5,1) = rand(5,1)*10+50;
Y(6:7,1) = rand(2,1)*10+90;

Yerr = rand(7,2)*25;

% initial errorbar plot

eax = axes('Position', [0.15, 0.15, 0.75, 0.75]);
errorbar(eax,X,Y,Yerr(:,1),Yerr(:,2),'ob')

hold on

% control axis range

XMIN = min(X)-0.05;
XMAX = max(X)+0.05;
YMIN = min(Y-Yerr(:,1))-10.0;
YMAX = max(Y+Yerr(:,2))+10.0;

xlim([XMIN XMAX]);
ylim([YMIN YMAX]);

% determine max distance between the two groups
% and its location (index)

[MD, IMD] = max(X(2:end)-X(1:end-1))

% set up zoomed plot

% based on know axis limits and location
% the position of the zoomed plot can be 
% set up parametrically:

X1 = (X(IMD,1) + MD * 0.1)/(XMAX-XMIN);
Y1 = (YMIN + 10)/(YMAX-YMIN);
DX1 = 0.35;
DX2 = 1.0;

zax = axes('Position', [X1, Y1, DX1, DX1]);
errorbar(zax,X,Y,Yerr(:,1),Yerr(:,2),'ob')
set(zax,'XLim',[XMIN+0.04 X(IMD)+0.01],'Title',text('String','zoomed'))

此代码生成如下图:

在此处输入图像描述

于 2013-08-07T12:46:32.263 回答
1

来自 MATLAB 文件交换的这个解决方案最终可能看起来更好:

面板文件交换-MATLAB Central

基本上我创建了两个单独的数字。第一个具有整个图形。第二个图显示了不可见点的放大版本。这些点具有相似的特征,使它们成为最好的。

所以我将第一张图标记为“所有选项”第二张图标记为“具有最佳权衡的选项”

我最终没有使用面板。我创建了单独的图表以便我可以轻松地调整它们的大小,但 Panel 会做类似的事情。

于 2013-08-07T15:54:34.973 回答