我在用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')pl... 程序如下:
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]。

急等高手指教,谢谢!
展开
 我来答
宇逸ycl
2012-12-19 · TA获得超过4088个赞
知道大有可为答主
回答量:1589
采纳率:50%
帮助的人:1848万
展开全部
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. 对于此坐标标签标示的坐标点,并不对应实际的坐标,图像只是对应实际的坐标,实际坐标的间隔是不能改变的。
tianxiawulang
2012-12-19 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2646万
展开全部
你的问题在于,只设置了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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘贺great
2012-12-19 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3829
采纳率:100%
帮助的人:1862万
展开全部

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

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('特征值');

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式