我正在尝试在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')
现在,您可以看到在垂直轴上没有对顶部的最后一个刻度进行计数。我不明白为什么。您能帮忙解决这个问题吗?
答案 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')
在注释中,您指定只需要三位数的格式。格式为'%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')
这是结果:
答案 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])