我一直在尝试在MatLab中创建多个情节的单个图形。尽管我设法为4个地块设置了许多功能,但我不能为这四个地块设置完全相同的xlim和ylim。我曾尝试使用*‘链接轴’*函数在MATLAB中,但它不能很好地工作。有什么办法可以让这成为可能吗?
You can see my current plotting settings here in which I had tried to use hold on function to plot multiple figures at the same time, however, I cannot add xlim([-99 1000]) and ylim([45 70]) here, I need an x-axis as -99:10:1000 and y-axis as 45:5:70
在这里,您可以看到我的绘图的当前输出,其中xlim和ylim不是我想要的:
附注:明文代码:
nTime = 110;
axx = linspace(-99, 1000, nTime);
figure
hold on
plot(axx, allSubjsMeanH+50, 'linewidth', 4);
plot(axx, allSubjsMeanL+50, 'linewidth', 4);
xline(0,'--', 'linewidth', 1);
yline(50,'--', 'linewidth', 1);
plot(axx(significantH), -1, 'b*', 'linewidth', 1);
plot(axx(significantL), -3, 'r*', 'linewidth', 1);
xlabel('Time (ms)', 'FontSize', 13)
ylabel('Accuracy (%)', 'FontSize', 13)
title('Headline', 'FontSize', 13)
legend('H','L')
% Set figure position and size
rectFig = get(gcf,'position');
width=700;
height=300;
set(gcf,'position',[rectFig(1),rectFig(2),width,height],
'color', 'white');
% What I need to include but I couldn't:
xlim([-99 1000]);
ylim([45 70]);
% What I've tried to use:
linkaxes(axx, 'xlim', 'ylim')
P.S.2当我以这种方式运行代码时,我可以以我需要的方式获得xlim和ylim,然而,这次我丢失了与signantH和signantL的曲线图相关的信息。我需要的是得到与Xlim和Ylim是固定的4个地块相关的信息。
figure
hold on
plot(axx, allSubjsMeanH+50, 'linewidth', 2);
plot(axx, allSubjsMeanL+50, 'linewidth', 2);
xline(0,'--', 'linewidth', 1);
yline(50,'--', 'linewidth', 1);
plot(axx(significantH), -1, 'b*');
plot(axx(significantL), -3, 'r*');
hold on
xlim([-99,1000]);
ylim([45,70]);
xlabel('Time (ms)', 'FontSize', 13)
ylabel('Accuracy (%)', 'FontSize', 13)
title('Headline', 'FontSize', 13)
legend('H','L')
2条答案
按热度按时间ahy6op9u1#
函数
linkaxes
用于链接不同轴对象(即图形或绘图区域)的x和/或y和/或z轴。在您的示例中,您只有一个轴对象。函数linkaxes
在这里毫无意义。根据我从你的问题中了解到的,你希望对你的四个情节中的两个使用不同的y轴。
这可以使用函数yyaxis来实现。无论您想要在左轴还是右轴上绘图,都必须在
plot
指令之前添加yyaxis left
或yyaxis right
。ylim
函数将应用于当前选定的yAxis。qyuhtwio2#
使用
subplot
和axis
,我可以在同一图中获得所有4个轨迹allSubjsMeanH+50
allSubjsMeanL+50
significantH
significantL
:。
。