Matlab画图技巧之消除空白
来源:互联网 发布:jersey json 传递对象 编辑:程序博客网 时间:2024/06/05 08:04
</pre>写报告或论文时,为了充分利用篇幅和实现紧凑美观,我们常常想要得到空白冗余较小的图,这在Tikz里面十分容易实现。但是在Matlab里需要做很多的工作才能达到目的。</p><p></p><p>Matlab默认的图空白十分大,看起来很别扭:</p><p><pre name="code" class="plain">clear;close all;clc;x=1:10;y=x.^2;figureplot(x,y);set(0,'defaultfigurecolor',[0.8 0.8 0.8]);% set(0,'defaultfigurecolor',[1 1 1])xlabel('x')ylabel('y')
为了解决这个问题,我们可以得到textlabel的size,然后控制axes的position以达到我们期望的图:
ax = gca;outerpos = ax.OuterPosition;ti = ax.TightInset;left = outerpos(1) + ti(1);bottom = outerpos(2) + ti(2);ax_width = outerpos(3) - ti(1) - ti(3);ax_height = outerpos(4) - ti(2) - ti(4);ax.Position = [left bottom ax_width ax_height];
这里给出的是一个简单的例子,实际的图可能比这个复杂很多。为了读者自己也能使用这个功能,有必要弄清楚三个概念:OuterPosition,Position,TightInset.
第一个是axes的外边框,默认是[0 0 1 1],即figure的最大范围,为了在图中看到这个范围,我们可以新建axes使其Position等于它:
figureplot(x,y);xlabel('x')ylabel('y')axes1=axes('Position',outerpos,'box','on','Color',[0, 1, 0, 0.1 ]);
在上图中,透明的浅蓝色范围就是outerposition.
Position是axes的边框范围,在图中可见。
TightInset是axes的position外面textlabel的尺寸。
为了消除空白,我们将axes的position的左起点坐标值定义为TightInset的第一个值,即ylabel的宽度,这样就刚好预留出ylabel的空间。同样对于纵向起点有类似结论。
通过这个方法,无论图怎么变,我们总能将多余的空白消去。
0 0
- Matlab画图技巧之消除空白
- Matlab画图技巧之消除空白(二)
- matlab画图,如何消除图形中多余的空白区域
- MATLAB 画图技巧
- matlab 去除画图两段空白
- Matlab画图技巧之保存超大体积图
- Matlab画图技巧总结(1)
- Matlab之画图实例
- MATLAB学习之画图
- matlab画图之pcolor函数
- MATLAB 私人使用手册之画图
- Matlab之画图相关总结
- MATLAB基本操作之画图
- matlab一些画图技巧(无整理)
- CSS3小技巧之画图
- matlab画图
- matlab 画图
- matlab 画图
- SharedPreferences 保存零散数据 用户名密码
- [LeetCode] 40. Combination Sum II
- getpriority()
- 从B 树、B+ 树、B* 树谈到R 树(转载)
- 关于nodejs
- Matlab画图技巧之消除空白
- java对字符串进行去重并排序
- 杭电-2089 不要62 (打表)
- cocos2dx v3.x之HttpRequest改动
- 关于Calling View methods on another thread than the UI thread的错误
- LinuxC编程实战之文件操作
- 自己实现 SharedPtr(4)—— 一个代码洁癖的救赎
- C语言getpriority()函数:取得程序进程执行优先权
- 拼图游戏学习