matlab - 在 MATLAB 子图中设置 XTick?

标签 matlab plot

我正在尝试为我的每个子图设置 XTick。看完the MATLAB documentation here ,我决定执行以下操作,但它不起作用。

MWE

subplot(2, 1, 1);
gca.XTick = [0, 6, 12, 18, 24];
subplot(2, 1, 2);
gca.XTick = [0, 6, 12, 18, 24];

我的 MATLAB 版本是

>> version

ans =

8.4.0.150421 (R2014b)

最佳答案

您不能使用 gca就好像它是赋值操作左侧的句柄引用一样。您可以使用 set(gca, ...)语法或 ax = gca; ax.XTick ... , 但前提是你要避免 gca.Whatever = ...语法,这将打破 gca由于标识符阴影,在您执行此操作的工作区中。

语法

gca.XTick = [0, 6, 12, 18, 24];

不会如你所愿。而不是调用 gca()函数,这将创建一个名为 gca 的新局部变量并使用具有名为 XTick 的字段的结构填充它.这不仅没有设置图中的刻度,而且新变量掩盖了 gca函数,所以后续调用 gca在同一工作区中将无法工作,直到 clear或者重新启动完成(他们将只访问本地结构字段)。

像这样使用临时变量

ax = gca;
ax.XTick = [0, 6, 12, 18, 24];

应该可以,只要您还没有完成 gca.XTick = ...在该工作区中赋值,或在同一函数的任何位置执行赋值。

这是 Matlab 采用“统一访问原则”的工作方式的一个不幸的怪癖:您可以调用不带括号的无参数函数或方法(如 set(gca, 'XTick', ...) ),但如果您这样做不要在同一函数的赋值语句中也使用相同的标识符作为左值,这会导致解析器将其识别为局部变量而不是函数调用。

简而言之,不要放gca= 的左侧赋值操作,应该可以。

演示

您可以使用 whos 查看实际效果或 which .将代码放入函数中,使其获得干净的工作区并使用 which看什么gca决定。

function darnit_gca()

disp('gca is:');
which gca

subplot(2, 1, 1);
gca.XTick = [0, 6, 12, 18, 24];
subplot(2, 1, 2);
gca.XTick = [0, 6, 12, 18, 24];

disp('now gca is:');
which gca

当你运行 darnit_gca ,可以看到gca的分辨率一旦将其用作左值,就会发生变化。

>> darnit_gca
gca is:
built-in (/Applications/MATLAB_R2014b.app/toolbox/matlab/graphics/gca)
now gca is:
gca is a variable.

关于matlab - 在 MATLAB 子图中设置 XTick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521566/

相关文章:

R:具有小倍数/子图的绘图纵横比

r - 由 R 图的小箭头组成的线

Python:更改 Plotly 中的自定义控件值

performance - MATLAB:如何有效地创建一个矩阵,这是外积的结果?

matlab - 矩阵的 det 在 matlab 中返回 0

matlab - MatLab 中的数值不稳定性卡尔曼滤波器

python - 将 xticks 和 yticks 放置在 imshow 图上的像素中心

matlab - 为二维系统生成 fork 图

matlab - 在 Matlab 中矢量化条件求和循环

java - rCaller 生成一个空图像和空图