改变Matlab绘图的透视图
假设我有一个矩阵改变Matlab绘图的透视图,matlab,Matlab,假设我有一个矩阵hey15x15。我想将矩阵的值绘制为2D图,以便更好地可视化。但Matlab绘图时使用的约定是原点位于左下角,正x位于左侧,正y位于原点的向上方向 但我想画出这样的图,原点在左上角,+vex在左边,+vey在下面 所以我只是耍了个小把戏 figure axis([0 15 -15 0]); daspect([1,1,1]) hold on rectangle('Position',[3,-6,2,3],... 'EdgeColor','black',...
hey
15x15。我想将矩阵的值绘制为2D图,以便更好地可视化。但Matlab绘图时使用的约定是原点位于左下角,正x位于左侧,正y位于原点的向上方向
但我想画出这样的图,原点在左上角,+vex在左边,+vey在下面
所以我只是耍了个小把戏
figure
axis([0 15 -15 0]);
daspect([1,1,1])
hold on
rectangle('Position',[3,-6,2,3],...
'EdgeColor','black',...
'LineWidth',2,...
'FaceColor','cyan')
for i=1:nrows
for j=1:ncolumns
if char(hey(i,j))=='^'
text(j,-i,'^');
elseif char(hey(i,j))=='>'
text(j,-i,'>');
elseif char(hey(i,j))=='v'
text(j,-i,'v');
elseif char(hey(i,j))=='<'
text(j,-i,'<');
end
if obstacle(i,j)==1
text(j,-i,'X');
end
end
end
text(goalY,-goalX,'T');
图
轴([0 15-15 0]);
daspect([1,1,1])
等等
矩形('位置',[3,-6,2,3],。。。
“EdgeColor”、“black”和,。。。
“线宽”,2,。。。
“FaceColor”、“青色”)
对于i=1:nrows
对于j=1:n列
如果char(嘿(i,j))=='^'
文本(j,-i,“^”);
elseif char(嘿(i,j))=='>'
文本(j,-i,“>”);
elseif char(嘿(i,j))=='v'
文本(j,-i,'v');
elseif char(嘿(i,j))='我想你想要什么就做什么:
轴ij
将坐标系原点放置在左上角。i轴垂直,值从上到下递增。j轴水平,值从左向右递增
要在顶部定位x轴,请将轴的'XAxisLocation'
更改为'top'
(默认值为'bottom'
)
例如:
x = 1:10;
y = x.^2;
plot(x,y)
axis ij
set(gca,'XAxisLocation','top')
clear
clc
%// Create dummy data
[x,y] = meshgrid(1:15,1:15);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
set(gca,'XAxisLocation','top','XTick',1:15,'YDir','reverse')
hold on
%// I changed the coordinated of the rectangle to fit with the change in
%y-axis.
rectangle('Position',[3,3,2,3],...
'EdgeColor','black',...
'LineWidth',2,...
'FaceColor','cyan')
axis([0 15 0 15])
原始图(上述代码第1-3行):
在轴ij之后(第4行):
在设置(gca,'XAxisLocation','top')
之后(第5行):
我想你想要什么就做什么:
轴ij
将坐标系原点放置在左上角。i轴垂直,值从上到下递增。j轴水平,值从左向右递增
要在顶部定位x轴,请将轴的'XAxisLocation'
更改为'top'
(默认值为'bottom'
)
例如:
x = 1:10;
y = x.^2;
plot(x,y)
axis ij
set(gca,'XAxisLocation','top')
clear
clc
%// Create dummy data
[x,y] = meshgrid(1:15,1:15);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
set(gca,'XAxisLocation','top','XTick',1:15,'YDir','reverse')
hold on
%// I changed the coordinated of the rectangle to fit with the change in
%y-axis.
rectangle('Position',[3,3,2,3],...
'EdgeColor','black',...
'LineWidth',2,...
'FaceColor','cyan')
axis([0 15 0 15])
原始图(上述代码第1-3行):
在轴ij之后(第4行):
在设置(gca,'XAxisLocation','top')
之后(第5行):
如果我正确遵循,则您正在查找轴XAxisLocation
和YDir
属性。您可以将它们分别设置为top
和reverse
,以获得所需的输出。您还可以将XTick
属性设置为1:15
,以显示从1到15的每个值
例如:
x = 1:10;
y = x.^2;
plot(x,y)
axis ij
set(gca,'XAxisLocation','top')
clear
clc
%// Create dummy data
[x,y] = meshgrid(1:15,1:15);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
set(gca,'XAxisLocation','top','XTick',1:15,'YDir','reverse')
hold on
%// I changed the coordinated of the rectangle to fit with the change in
%y-axis.
rectangle('Position',[3,3,2,3],...
'EdgeColor','black',...
'LineWidth',2,...
'FaceColor','cyan')
axis([0 15 0 15])
其中给出了以下内容:
如果我正确遵循,则您正在查找轴XAxisLocation
和YDir
属性。您可以将它们分别设置为top
和reverse
,以获得所需的输出。您还可以将XTick
属性设置为1:15
,以显示从1到15的每个值
例如:
x = 1:10;
y = x.^2;
plot(x,y)
axis ij
set(gca,'XAxisLocation','top')
clear
clc
%// Create dummy data
[x,y] = meshgrid(1:15,1:15);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
set(gca,'XAxisLocation','top','XTick',1:15,'YDir','reverse')
hold on
%// I changed the coordinated of the rectangle to fit with the change in
%y-axis.
rectangle('Position',[3,3,2,3],...
'EdgeColor','black',...
'LineWidth',2,...
'FaceColor','cyan')
axis([0 15 0 15])
其中给出了以下内容:
路易斯·门多在下面的回答应该告诉你需要什么。除此之外,您还应该特别了解Matlab图形系统的文档。图形系统是相当多功能的,许多问题都可以不借助技巧解决。路易斯·门多在下面的回答应该告诉你想要什么。除此之外,您还应该特别了解Matlab图形系统的文档。图形系统非常通用,许多问题都可以不借助技巧解决。哦,很好,我不知道这个命令哈哈,谢谢你和+1。对于漂亮的单线解决方案,+1。@Benoit_11实际上,如果您看到axis
code,您会发现axis ij
只需将'YDir'
属性设置为'reverse'
do@LuisMendo我的解决方案中仍然缺少一个链接。请参见编辑。@giffy可能视图([90 90])
或视图([-90 90])
?哦,很好,我不知道这个命令哈哈,谢谢你和+1。对于漂亮的单行解决方案,+1。@Benoit_11实际上,如果你看到axis
代码,你会发现axis ij
只是将'YDir'
属性设置为'reverse'
,像你一样do@LuisMendo我的解决方案中仍然缺少一个链接。请参见编辑。@giffy可能视图([90 90])
或视图([-90 90])
?Luis的答案更容易理解,并且最有可能被选择用于实施,但您的拜占庭式方法允许您解决其他几个问题。感谢您对XAxisLocation
和YDir
进行技术观察。我最初没有在OP中看到“x轴在顶部”的要求。我刚刚将其添加到我的答案中,现在我看到您首先做到了。我希望你不介意@Benoit_11我在问题中还提到,对于矩阵(i,j)
被映射到图形图(x,y)
作为x=j,y=i
。因此,我仍然必须使用类似于plot(j,i)
的技巧,而不是单纯的plot(i,j)
。有类似的解决方法吗?没问题@LuisMendo!Luis的答案更容易理解,并且最有可能被选择用于实现,但您的拜占庭式方法允许您解决其他几个问题。感谢您对XAxisLocation
和YDir
进行技术观察。我最初没有在OP中看到“x轴在顶部”的要求。我刚刚将其添加到我的答案中,现在我看到您首先做到了。我希望你不介意@Benoit_11我在问题中还提到,对于矩阵(i,j)
被映射到图形图(x,y)
作为x=j,y=i
。因此,我仍然必须使用类似于plot(j,i)
的技巧,而不是单纯的plot(i,j)
。有类似的解决方法吗?没问题@LuisMendo!