我正试图在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') 现在,你可以看到,在垂直轴上,顶部的最后一个勾号是不被计数的。我不明白为什么。你能帮我修一下吗?
发布于 2018-10-25 14:42:55
我认为这只是一个可视化的问题。如果要确保显示了限值,可以强制执行刻度值:
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') 其结果是:

发布于 2018-10-25 14:46:55
正在发生的事情似乎是一个浮点四舍五入的问题。奇怪的是,八度也做了同样的事情。
>> 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,后者是一个不同的值。
发布于 2018-10-25 15:01:17
您可以使用函数集手动设置滴答。
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])https://stackoverflow.com/questions/52991822
复制相似问题