首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原木缩放的pcolor的小滴答

问原木缩放的pcolor的小滴答
EN

Stack Overflow用户
提问于 2015-01-23 16:57:30
回答 1查看 2.5K关注 0票数 1

下面的代码几乎完全符合我的要求(MATLAB R2010a)

代码语言:javascript
复制
[x,y] = meshgrid(logspace(-1,1,5),logspace(0,7,5));

pcolor(x,y,x.*y); shading interp;
set(gca, 'XScale', 'log', 'YScale', 'log');
set(gca,'YMinorTick','on');
set(gca,'Layer','top');

它制作了一个图形,其中网格线没有显示,但主要和次要的勾标都是可见的。但是,当我将第一行替换为

代码语言:javascript
复制
[x,y] = meshgrid(logspace(-1,1,10),logspace(0,7,10));

(也就是说,当我提高分辨率时)突然间,微小的勾痕消失了。那么,如何在大型数据集的pcolor图上使用日志大小的小滴答标记呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-23 17:54:50

Matlab不提供对小网格和滴答的太多控制。您可以设置它们的可见性(很明显,您已经受到了限制),但是您不能设置它们的值/位置/数量等等.

方法是完全关闭包含pcolor图的轴上的所有滴答和网格,然后在上面创建一个透明的空axes,其中包含您定义的网格属性。

因为在这个空的axes中没有任何绘图或其他图形对象,所以对于您设置的属性,Matlab会表现得更好(它不会试图变得聪明,也不会改变背景中的一些东西)。

所以就你的情况来说,它应该是这样的:

代码语言:javascript
复制
[x,y] = meshgrid(logspace(-1,1,10),logspace(0,7,10));
pcolor(x,y,x.*y); shading interp;
colormap(flipud(gray(64))) %// just so the grid lines are more visible

axbot = gca ;              %// retrieve the handle of the current axis
set(axbot, 'XScale', 'log', 'YScale', 'log');
axis off                   %// remove all ticks/grid etc...

%// now create the "overlay" axes, which replicate some of the properties of the underlying axis (position/limits etc ...)
axtop = axes('Position',get(axbot,'Position'),'Color','none',...
            'Xlim',get(axbot,'XLim'), 'Ylim',get(axbot,'YLim'),...
            'XScale', 'log', 'YScale', 'log' , ...
            'YMinorTick','on' , 'YMinorGrid','off') ;

请注意,有些属性只是简单地从底层axes复制,而另一些属性则是显式设置的(如YMinorTick和YMinorGrid)。

这将阴谋:

​

如果还想显示Y小网格,只需将YMinorGrid更改为on即可。

如果你也想要右边的Y号标记,你只需要重复同样的事情(几乎)。添加另一个轴,这一次将XAxisLocation指定为Top,YAxisLocation指定为right。

代码语言:javascript
复制
axtopright = axes('Position',get(axbot,'Position'),'Color','none',...
            'Xlim',get(axbot,'XLim'), 'Ylim',get(axbot,'YLim'),...
            'XScale', 'log', 'YScale', 'log' , ...
            'YMinorTick','on' , 'YMinorGrid','off' , ...
            'XAxisLocation', 'Top','YAxisLocation','right' ) ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28114861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档