MATLAB画图---设置坐标轴为固定值(以4厘米为例)

在我们写论文的时候,通常要绘制仿真结果图。不同的期刊会有不同的格式要求,碰到一些期刊要求比较严格的,就会很伤脑筋。
例如某个期刊的格式要求:

  • 带坐标的图,单幅宽度(横坐标宽度,不包含参量与文字)4 cm。非坐标图视具体情况而定,一般单幅约6 cm。双幅横排12 cm,3幅横排16 cm;
    在这里插入图片描述
图1

那么我们如何画一张宽和高为6cm,其中坐标轴宽度为4cm的图呢?
在这之前,我去网上查了一些方法,有说将matlab的图片放到visio中然后取消组合的,还有一些方法都不适合,好在自己最终捣鼓出来了。
以这篇博客为例MATLAB中如何设置图片大小?,在这篇博客中,首先通过以下命令,将图片的大小设置为7cm×5cm。

set(gcf,’unit’,’centimeters’,’position’,[3 5 7 5])%前面的3 5 指的是要生成的图片窗口距离电脑左下角的距离
%后面的7 5 指的是实际图片大小

在这里插入图片描述

图2

然后,通过以下命令,将坐标轴的宽度按比例去占据。

set(gca,'Position',[0.15 0.15 0.8 0.75]);
说明:
%0.15 x轴起点从7*0.15=1.05cm的位置开始
%0.15 y轴的起点从5*0.15=0.75cm
%0.8 表示x轴的长度占总宽度的比例为0.8,即x轴的长度为7*0.8=5.6cm
%0.75 同理表示y轴的长度为5*0.75=3.75cm

在这里插入图片描述

图3

这样一来不就很简单了吗,开干!(可是事实真的如此吗?)
分析,要求图片为6cm6cm,坐标轴为4cm4cm,大致的形状如下:在这里插入图片描述

图4

按照上面的思想,两条代码应这样设置:

set(gcf,’unit’,’centimeters’,’position’,[10 10 6 6])set(gca,'Position',[0.16666 0.16666 0.66666 0.66666]);

其中0.16666的作用为0.16666*61cm表示左隔1cm之后开始绘制x轴
0.66666的作用为0.66666*64cm表示x轴的长度为4cm
补充(其实第二行的代码可以不用设置,在图片的属性编辑器中也可以设置)

但是当我将我的图(随意弄了一个图:有对照组)按照这种方法画了出来,会发现是下面这个鬼样子,图片确实是缩小了,但是图例并不会按照比例去缩小。(图例指的是每个颜色代表什么意思,这个应该都懂的)
在这里插入图片描述

图5
  • 那有什么方法能够在图例保持不变的情况下,将图片按照大小为6cm6cm,并且包含坐标轴为4cm4cm呢?

进入正文

还是借助上面的比例的思想,因为这个比例我们已经知道了:0.66666=4cm/6cm,我们可以现在图片比较大的时候,将所有图都画好,然后设置好比例即可,最后即使是10cm10cm的图,我们把它缩放为6cm6cm依然适用。可能有点绕口,直接看操作吧。
第一步: 无需设置什么东西,直接画图即可,然后点击查看,把绘图浏览器和属性编辑器打开。在这里插入图片描述

图6

第二步: 在属性编辑器中有一个检查器,打开它。在这里插入图片描述

图7

在属性检查器中,我们可以看到Location and Size这个标签,这个和之前出现过的

set(gcf,’unit’,’centimeters’,’position’,[10 10 6 6])

有异曲同工之妙,从图8我们也能看出来,x和y由于距离左下角很近,所以接近0,width和height表示图片的长度,这里我们最好拖动窗口保证width=height在这里插入图片描述

图8

第三步: 在图9中我已经把图片的宽和高设置成一样了,我设置的是500,这个数值不影响,只要一样就行。下一步只需把坐标轴的比例设置一下就好了。在这里插入图片描述

图9

第四步: 然后,鼠标选中坐标轴,再点击属性检查器,修改Location and Size这个标签中的position,其他地方不要动,将其改成[0.16666 0.16666 0.66666 0.66666],当然小数点越多越精确了。在这里插入图片描述

图10

第五步:,我们点击左上角的编辑,然后复制图片到visio软件上,然后修改图片的大小为60mm*60mm。可以发现图片已经是我们想要的效果了。在这里插入图片描述

图11

在这里插入图片描述

图12

最后一步: 保存当前图片,这个看你想要保存什么要求的图片了,至于我就保存为emp格式,放在论文中也不失真,很清晰。在图14中上一幅图的宽度我设为成了4cm,对比发现我们画出的图片完美的符合预期。在这里插入图片描述

图13

在这里插入图片描述

图14

这段话是第二天写的:

当时没注意,以为万事大吉了,后面才发现上面的操作搞完之后,虽然长度都满足了,但是100%状态下看的时候字体还是会不清楚,原因就是因为当初放大的时候设置的是8pt,缩小到6cm*6cm实际上字体就不是8pt了。但是我没有把这篇博客删了,目的是让大家知道MATLAB在画图这方面真的不是万能的。
建议: 画图还是origin香,MATLAB用于跑实验就好了,最后的数据结果放在origin展示。MATLAB虽然说可以满足大部分的要求,但是有些期刊的要求真的不好搞,不如直接上手origin,也没什么学习成本,我用汉化破解版的,半天就上手了,如果不知道去哪安装,推荐一个微信公众号软件通,(我不是来打广告的,这公众号也没给我广告费,只是给小伙伴们一个良心的建议,祝大家早日发文章)。

为了解决这个bug以及写这篇博客费了我好多心思,觉得本文内容对你有所帮助的话,希望能点赞收藏,你的鼓励是对我最大的支持!祝看完这篇文章的小伙伴论文都能顺利录用!

连接导航—论文要求MATLAB坐标轴中的x和y轴标签中文用宋体,英文用其它字体,该如何解决?

### MATLAB 中调整图形轴标签以科学计数法显示 在 MATLAB 中,可以通过设置坐标轴属性 `TickLabelFormat` 来控制刻度标签的格式。对于希望将 y 轴或 x 轴标签以科学记数法形式(如 \(10^{-4}\))显示的情况,可以利用 `set(gca,'YAxis','exponent')` 或者通过自定义字符串格式化的方式完成。 以下是具体方法: #### 方法一:使用默认指数表示 MATLAB坐标轴对象支持自动检测数值范围并应用科学记数法。如果数据量级较小(如接近于零),则会启用指数模式[^1]。 代码如下: ```matlab % 创建示数据 x = linspace(0, 1, 10); y = exp(-4)*sin(x); figure; plot(x, y); ax = gca; % 获取当前坐标轴句柄 ax.YAxis.Exponent = -4; % 设置 Y 轴指数为 -4 ``` 此方法适用于简单的场景,其中只需要指定固定的指数值即可满足需求。 #### 方法二:手动定制 TickLabels 当需要完全掌控刻度样式时,可通过修改 `XTickLabel` 和 `YTickLabel` 属性实现更加灵活的表现形式。下面展示如何让 y 轴上的每一个 tick 都带有 \( \times 10^{-4} \): ```matlab % 绘制曲线图 x = linspace(0, 1, 10); y = exp(-4)*sin(x); fig = figure(); hPlot = plot(x,y); yticks_vals = get(gca,'YTicks'); % 获取现有 ticks 值 new_labels = cellstr(num2str(yticks_vals'*exp(+4),'%.2f')); % 将原始值乘上 1e+4 并保留两位小数 set(gca,... 'YTick', ytickets,... 'YTickLabel',{[new_labels{:}]},... % 替换新的 label 文本数组 ); text_handle = text(.7,.9,['\times10^{',num2str(-4),'}'],... 'Units','normalized',... 'FontSize',16,... 'FontWeight','bold'); ``` 上述脚本中,我们先获取到原生的 y-tick 数组,并将其转换成带单位的形式再重新赋给对应字段;最后还额外添加了一段说明文字用于强调倍率关系[^3]. 以上两种途径均能有效达成目标——即把 matlab 图形中的某一维度标注改为特定幂次下的标准化表达.
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫恋蝶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值