轮廓中缺少刻度线
Ticks missing in contourf
我想以对数值绘制刻度线(没有标签,只有刻度线)。出于某种原因,以下代码没有绘制它们(set(gca,'XTick') 没有做任何事情):
figure1=figure(1)
axes1 = axes('Parent',figure1,'YScale','log','XScale','log');
grid(axes1,'on');
hold(axes1,'on');
[C,h]=contourf(lamx(2:NKX+1),lamz(2:NKZ+1),phi2d(2:NKX+1,2:NKZ+1)',[10],'LineColor','none');
clabel(C,h);
axis tight;
axis([lamx(end) max(lamx) lamz(end) max(lamz)])
xlabel('\lambda_x','Fontsize',20);
ylab=ylabel('\lambda_z','Fontsize',20);
set(gca,'XTick',0.1:0.1:1)
grid on
set(gcf, 'PaperPositionMode','auto');
set(ylab, 'Units', 'Normalized', 'Position', [-0.1, 0.5, 0]);
set(gca,'linewidth',1.5,'FontSize',16)
colormap(flipud(gray(256)));
colorbar;
print('-dpng','-opengl','-r1200','2dspec')
如何绘制刻度线?
您示例中的刻度线被 Contour
对象本身遮盖了。 Axes
元素相对于其中对象的绘制顺序由 Axes
Layer
属性.
控制
这个 属性 的默认值是 bottom
这意味着像在轴上绘制的填充轮廓之类的东西将被绘制在刻度的顶部,你将无法看到他们。 contourf
函数显然知道这不是一个有用的默认值,因为它通常会在您调用它时将 属性 更改为 top
,因为它通常会将 属性 更改为 top
Axes
NextPlot
设置为 replace
。通过调用 hold on
,您还导致 contourf
单独留下 属性,因此它最终停留在 bottom
。
在您的示例中,您可以通过以下两种方式之一处理此问题。
正如目前所写的那样,hold(axes1,'on');
行没有故意的效果,因为您只添加了一个情节。因此,如果您的完整代码不依赖它,您可以删除该行。否则,
在创建轴时从一开始就将 Layer
属性 设置为 top
:
axes1 = axes('Parent',figure1,'YScale','log','XScale','log','Layer','top');
我想以对数值绘制刻度线(没有标签,只有刻度线)。出于某种原因,以下代码没有绘制它们(set(gca,'XTick') 没有做任何事情):
figure1=figure(1)
axes1 = axes('Parent',figure1,'YScale','log','XScale','log');
grid(axes1,'on');
hold(axes1,'on');
[C,h]=contourf(lamx(2:NKX+1),lamz(2:NKZ+1),phi2d(2:NKX+1,2:NKZ+1)',[10],'LineColor','none');
clabel(C,h);
axis tight;
axis([lamx(end) max(lamx) lamz(end) max(lamz)])
xlabel('\lambda_x','Fontsize',20);
ylab=ylabel('\lambda_z','Fontsize',20);
set(gca,'XTick',0.1:0.1:1)
grid on
set(gcf, 'PaperPositionMode','auto');
set(ylab, 'Units', 'Normalized', 'Position', [-0.1, 0.5, 0]);
set(gca,'linewidth',1.5,'FontSize',16)
colormap(flipud(gray(256)));
colorbar;
print('-dpng','-opengl','-r1200','2dspec')
如何绘制刻度线?
您示例中的刻度线被 Contour
对象本身遮盖了。 Axes
元素相对于其中对象的绘制顺序由 Axes
Layer
属性.
这个 属性 的默认值是 bottom
这意味着像在轴上绘制的填充轮廓之类的东西将被绘制在刻度的顶部,你将无法看到他们。 contourf
函数显然知道这不是一个有用的默认值,因为它通常会在您调用它时将 属性 更改为 top
,因为它通常会将 属性 更改为 top
Axes
NextPlot
设置为 replace
。通过调用 hold on
,您还导致 contourf
单独留下 属性,因此它最终停留在 bottom
。
在您的示例中,您可以通过以下两种方式之一处理此问题。
正如目前所写的那样,
hold(axes1,'on');
行没有故意的效果,因为您只添加了一个情节。因此,如果您的完整代码不依赖它,您可以删除该行。否则,在创建轴时从一开始就将
Layer
属性 设置为top
:axes1 = axes('Parent',figure1,'YScale','log','XScale','log','Layer','top');