多个X轴在不同的规模,但一个y轴

148(30天)
你好,
如何添加多个X轴在不同规模?请帮我个忙吗?它会像这样:

接受的答案

亚当Danz
亚当Danz 2020年7月28日
编辑:亚当Danz 2022年4月14日
Matlab以外的不支持多重x轴万博1manbetx的轴上、下边界的阴谋。
包括多轴单元的一个方法是创建多行轴蜱虫。上轴将你的主要轴用于策划你的数据。然后定义轴限制所有额外的pseudo-axes和计算每个pseudo-axis蜱虫值所以他们结合x-ticks主轴。使用这些值来创建多行x-tick标签。
按照下面的演示和调整,以适应您的需要。
演示
%建立主轴(上)
clf ()
ax =轴();
斧子。XTick = 0:200:2800;
ax.XLim= [0,2800];
%为所有其他轴轴设定限制
additionalAxisLimits = [
0,1400;%轴2
19.2、23.4;%轴3
0.2,3);%轴4
%计算蜱虫值为每个轴与主轴对齐
additionalAxisTicks = arrayfun (@ (i) {linspace (additionalAxisLimits(我,1),
additionalAxisLimits(我,2),元素个数(ax.XTick))}, 1:尺寸(additionalAxisLimits,1));
%设置多行蜱虫
allTicks = [ax.XTick;cell2mat (additionalAxisTicks '));
tickLabels =组成(' % 4 d \ \换行符% 4 d \ \换行符% .1f \ \换行符% .1f 'allTicks (:)。');
% % 4 d添加空间左边的标签为中心。
%你需要添加“%。1f\\newline" for each row of labels (change formatting as needed).
%或者,您可以使用下面的柔性生产线,适用于任何数量
%的行但对所有行使用相同的格式。
% tickLabels =组成(repmat (% .2f \ \换行,1,大小(allTicks, 1)), allTicks (:)。');
%减少轴高度和宽度,为标签
ax.Position (3:4) = ax.Position(3:4) *炮;%减少到75%
ax.Position (2) = ax.Position (2) + 2;%上升
%加上x标记标签
集(ax,“XTickLabel”tickLabels,“TickDir”,“出”,“XTickLabelRotation”,0)
%定义标签的每一行
ax2 =轴(“位置”,总和(ax.Position ([1,3])) * 1.08, ax.Position(2), .02点,0.001]);
linkprop ((ax, ax2) {“TickDir”,“字形大小”});
axisLabels = {“距离(t)”,“区域(m ^ 2)”,“问从0 (m)”,“KB (m)”};%每个轴
集(ax2,“XTick”,0.5,“XLim”[0,1],“XTickLabelRotation”0,“XTickLabel”strjoin (axisLabels“\ \换行符”))
ax2.TickLength (1) = 0.2;%根据需要调整使两个轴之间的蜱虫
类似的例子在论坛
34个评论
马修Mishrikey
马修Mishrikey 2022年4月15日
R2021a。最近肯定是固定的。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!