在matlab中的图表中,是否有一种方法可以将y轴上下颠倒,使得y轴的正方向指向下方而不是上方?
(我请求您,请不要说,打印出来然后把纸翻过来;-)
在matlab中的图表中,是否有一种方法可以将y轴上下颠倒,使得y轴的正方向指向下方而不是上方?
(我请求您,请不要说,打印出来然后把纸翻过来;-)
在Matlab中,'YDir'
轴属性 可以是 'normal'
或 'reverse'
。默认情况下,大多数图形的Y轴方向为 'normal'
,但某些图形将自动更改为 'reverse'
,例如image
或imagesc
函数。
您可以使用set
函数或点索引(在较新的MATLAB版本中)设置轴的y轴方向:
h = gca; % Handle to currently active axes
set(h, 'YDir', 'reverse');
% or...
h.YDir = 'reverse';
我对其他答案中有关'YDir'
属性已经消失或出现错误的说法感到困惑。在2013年、2014年或2016年版本的MATLAB中,我没有看到任何这样的行为。我只遇到了两个潜在的陷阱:
该属性不能使用单元数组设置,只能使用字符串:
>> set(gca, 'YDir', {'reverse'});
Error using matlab.graphics.axis.Axes/set
While setting property 'YDir' of class 'Axes':
Invalid enum value. Use one of these values: 'normal' | 'reverse'.
虽然这个可以工作:
set(gca, {'YDir'}, {'reverse'}); % Property name is also a cell array
gca
函数不能在执行点索引时作为句柄交替使用(这就是为什么我在上面的示例中首先将其保存到变量h
中的原因):
>> gca.YDir
Undefined variable "gca" or class "gca.YDir".
>> gca.YDir = 'reverse' % Creates a variable that shadows the gca function
gca =
struct with fields:
YDir: 'reverse'
最后,如果你想要一些可以在不考虑当前状态的情况下切换'YDir'
属性的代码,你可以这样做:
set(gca, 'YDir', char(setdiff({'normal', 'reverse'}, get(gca, 'YDir'))));
% or...
h = gca;
h.YDir = char(setdiff({'normal', 'reverse'}, h.YDir));
get(gca,'YDir')
进行检查)。在这种情况下,请尝试:set(gca,'YDir','normal');
- tashuhkaaxis ij
会反转 Y 轴(在 x 轴上方为负,在 x 轴下方为正)。对于我来说,栈顶的解决方案并没有起作用,
imagesc(x,y,data) % 会导致画面翻转,y轴颠倒了
set(gca,'YDir','reverse'); % 报错
axis ij; % 还是会出现翻转的画面
下面的方法起到了作用:
imagesc(x,y,data); axis xy; % results in the correct plot
我正在使用 Matlab 的版本(2013及以上版本),但其中的 YDir
属性已经消失了。
imagesc(time,y,matrix); axis xy;
。命令 set('YDir','reverse');
和 set('YDir','normal');
存在于我的 Matlab 2016a 中。我不明白你所说的某些属性已经消失了是什么意思;可能只是改变了。 - Léo Léopold Hertz 준영>> axis ij
>> axis ji
set(gca,'XDir','reverse');
set(gca,'ZDir','reverse');
'YDir'
属性一直存在,并且设置它从未给我带来过错误。这在2013年、2014年和2016年的版本中都适用于我。 - gnovice