我在用matlab中的plot画图的时候,在设置了xy轴坐标之后,画出来的图上显示的坐标不是完全的,请看图:

程序如下:
x1=[17,16,12,10,9,6,5,4,3,2,1];y1=[1,2,3,4,5,6,9,10,12,16,17];get(gca,'xtick')
plot(x1,y1,'k.-');set(gca,'xticklabel',{'17','16','12','10','9','6','5','4','3','2','1'});set(gca,'yticklabel',{'1','2','3','4','5','6','9','10','12','16','17'});axis([1 17 1 17]);title('度特征');xlabel('节点的度');ylabel('特征值');
我想设置的x轴的坐标是[17,16,12,10,9,6,5,4,3,2,1],y轴的坐标是[1,2,3,4,5,6,9,10,12,16,17]。

急等高手指教,谢谢!

1. x轴坐标逆向排列,可以使用set(gca,'XDir','rev')命令;

2. 由于这个坐标轴标签未涉及到字符串,可以直接设置一下标签的位置就行了,然后可以了。

如下所示:

x1=[17,16,12,10,9,6,5,4,3,2,1];
y1=[1,2,3,4,5,6,9,10,12,16,17];
plot(x1,y1,'k.-');
axis([1 17 1 17]);
set(gca,'XDir','rev')
set(gca,'xtick',[1,2,3,4,5,6,9,10,12,16,17])
set(gca,'ytick',[1,2,3,4,5,6,9,10,12,16,17])
title('度特征');
xlabel('节点的度');
ylabel('特征值');

这种得出来的结果坐标轴标签分布显示不是均匀分布的,不知道是不是你想要的答案。追问

请问有什么办法把它均匀分布吗?我希望可以使均匀分布的,谢谢!

追答

1.对x轴的实际坐标进行逆向排列,然后设置均匀坐标标签位置,设置坐标标签。
>> x1=[17,16,12,10,9,6,5,4,3,2,1];
>> y1=[1,2,3,4,5,6,9,10,12,16,17];
>> plot(x1,y1,'k.-');
>> axis([1 17 1 17]);
>> set(gca,'XDir','rev')
>> n=length(x1);
>> x=linspace(1,17,n);
>> set(gca,'xtick',x)
>> set(gca,'ytick',x)
>> set(gca,'xticklabel',{'1','2','3','4','5','6','9','10','12','16','17'});
>> set(gca,'yticklabel',{'1','2','3','4','5','6','9','10','12','16','17'});
>>

2.x轴实际坐标不逆转,只设置均匀坐标标签点,填充标签。
x1=[17,16,12,10,9,6,5,4,3,2,1];
y1=[1,2,3,4,5,6,9,10,12,16,17];
plot(x1,y1,'k.-');
axis([1 17 1 17]);
n=length(x1);
x=linspace(1,17,n);
set(gca,'xtick',x)
set(gca,'ytick',x)
set(gca,'xticklabel',{'17','16','12','10','9','6','5','4','3','2','1'});
set(gca,'yticklabel',{'1','2','3','4','5','6','9','10','12','16','17'});
>>
3. 对于此坐标标签标示的坐标点,并不对应实际的坐标,图像只是对应实际的坐标,实际坐标的间隔是不能改变的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-19
你的问题在于,只设置了ticklabel而未设置tick,所以显示不全,而且位置也是错的。

xt = sort(x1);
yt = sort(y1);
for i=1:length(xt)
xtl{i} = num2str(xt(i));
ytl{i} = num2str(yt(i));
end
set(gca,'xtick',xt,'xticklabel',xtl,'ytick',yt,'yticklabel',ytl)
第2个回答  2012-12-19

呵呵,你只设置了轴标,没设置轴的刻度位置,试试这样:

clear all;clc;
x1=[17,16,12,10,9,6,5,4,3,2,1];
y1=[1,2,3,4,5,6,9,10,12,16,17];
plot(x1,y1,'k.-');
set(gca,'Xtick',y1);
set(gca,'XtickLabel',x1);
set(gca,'Ytick',y1);
set(gca,'YtickLabel',y1);
axis([1 17 1 17]);
title('度特征');
xlabel('节点的度');
ylabel('特征值');

 

相似回答