Matlab-为次轴设置xticks,而不是与第一个轴齐平

Matlab-为次轴设置xticks,而不是与第一个轴齐平,matlab,Matlab,我有一个函数,它创建了保持某个时间的累积概率(Y轴上的值介于0和1之间,x轴上的天数)。因为我知道距离,所以我考虑添加一个具有时间相关平均速度的次x轴 添加一个次轴是相对容易的,就像start I成功地将xlim设置为正确,并将其反转一样 xlabel('Time (days)') xlim([27 38]) a1Pos = get(gca,'Position'); b = axes('Position',[a1Pos(1) a1Pos(2)-.06 a1Pos(3) a1Pos(4)], 'Y

我有一个函数,它创建了保持某个时间的累积概率(Y轴上的值介于0和1之间,x轴上的天数)。因为我知道距离,所以我考虑添加一个具有时间相关平均速度的次x轴

添加一个次轴是相对容易的,就像start I成功地将xlim设置为正确,并将其反转一样

xlabel('Time (days)')
xlim([27 38])
a1Pos = get(gca,'Position');
b = axes('Position',[a1Pos(1) a1Pos(2)-.06 a1Pos(3) a1Pos(4)], 'YTick',[],'YTickLabel',[]);
xmaxb = round(dist/(xmaxa*24));
xminb = round(dist/(xmina*24));
set(b,'Units','normalized');
set(b,'Color','none');
set(b, 'XDir','reverse')
set(b,'xlim',[xminb xmaxb])
xlabel(b,'Average speed on the journey (knots)')

有两个问题,第一个是舍入的影响太大,第二个是,更重要的是,xminb和xmaxb之间不是线性关系,所以我必须手动添加xtick?我试着这样做:

set(b,'XTick',[12 13 14 15 16 17])

因此,现在次轴变为空,我不知道如何在它们之间设置不同的间距(右侧12-13之间的距离应大于左侧16-17之间的距离)

我将使用与主轴相同的“XTick”和“Xlim”,并更改间距。您可以为每个记号指定任何字符串(或数字)


但在定义“XTickLabel”时,请明确说明“XTick”,以便标签与轴上的特定位置相关联。缩放图形可以更改自动生成的记号的数量,这会导致您选择的标签出现在错误的位置。

我想我发布了解决方案,有点像Cris Luengo所说的,因此,要通过降低速度值(随着时间的增加)来获得正确的结果非常棘手(IMO):

希望它能在将来帮助别人


我假设
b
是次轴?包括一个图形并提供一个可验证的示例可能会有所帮助。是的,b是次轴,有什么建议吗?
xmaxb = floor(dist/(xmaxa*24)); %xmaxa = max value of the first xlabel
xminb = ceil(dist/(xmina*24)); %xmina = min value of the first xlabel
bticks_lab = fliplr(xmaxb: 0.5:xminb); % spacing 0.5 for the second axis and flip it.
bticks_loc = (dist./(bticks_lab * 24) - xmina) / (xmaxa-xmina); 
% The new "b" axis got locations between 0 and 1, this took awhile to figure out!
b = axes('Position',[a1Pos(1) a1Pos(2)-.06 a1Pos(3) a1Pos(4)], 'YTick',[],'YTickLabel',[]);
set(b,'Units','normalized');
set(b,'Color','none');
set(b,'XTick',bticks_loc)
set(b,'XTickLabel',{bticks_lab})