Matlab图片中的框和轴坐标

时间:2018-10-25 14:31:31

标签: image matlab matlab-figure

我正在尝试在Matlab中构建图片。我希望包含绘图框(box on),并且报告轴的坐标,直到达到我设置的极限。例如考虑

scatter(-0.5, 0.399, 'c','filled');
box on
axis([-0.504 -0.494 0.397 0.408 ])
legend('A')
xlabel('\gamma_0')
ylabel('\delta_0')
title('N=3') 

现在,您可以看到在垂直轴上没有对顶部的最后一个刻度进行计数。我不明白为什么。您能帮忙解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

我认为这只是一个可视化问题。如果要确保显示您的限制,则可以强制滴答值:

scatter(-0.5, 0.399, 'c','filled');
box on
axis([-0.504 -0.494 0.397 0.408 ])

xticks(linspace(-0.504, -0.494, 11)); % Set the ticks vector as a vector of 11 elements from -0.504 to -0.494
yticks(linspace(0.397, 0.408, 11));

legend('A')
xlabel('\gamma_0')
ylabel('\delta_0')
title('N=3') 

Image in my matlab

在注释中,您指定只需要三位数的格式。格式为'%1.3f'的字符串。您还可以强制设置刻度线的格式:

scatter(-0.5, 0.399, 'c','filled');
box on
axis([-0.504 -0.494 0.397 0.408 ])

xtickformat('%1.3f');
ytickformat('%1.3f');
xticks(linspace(-0.504, -0.494, 11)); 
yticks(linspace(0.397, 0.408, 11));

legend('A')
xlabel('\gamma_0')
ylabel('\delta_0')
title('N=3') 

这是结果:

enter image description here

答案 1 :(得分:2)

正在发生的事情似乎是一个浮点数舍入问题。八度奇怪地做同样的事情。

>> axis([-0.504 -0.494 0.397 0.408 ])
>> t=get(gca,'ytick')
t =
   0.39600   0.39800   0.40000   0.40200   0.40400   0.40600   0.40800

>> l=get(gca,'ylim')
l =
   0.39700   0.40800

>> t(end)-l(end)
ans =
   5.5511e-17

因此在0.408处有一个刻度线,但刻度线的位置仍在轴限制的正上方,因此未显示。

您可以按照Matteo的建议显式设置刻度位置,或显式设置轴限制:

ylim([0.397,t(end)])

请注意,这里的技巧是使用刻度线t(end)的确切位置,而不是常数0.408,后者是一个不同的值。

答案 2 :(得分:2)

您可以使用功能 set

手动设置刻度线
scatter(-0.5, 0.399, 'c','filled');
box on
axis([-0.504 -0.494 0.397 0.408 ])
legend('A')
xlabel('\gamma_0')
ylabel('\delta_0')
title('N=3')
yTickDiff = diff(get(gca,'YTick'));
set(gca,'YTick',[0.397:yTickDiff(1):0.408])