爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14481|回复: 8

matlab柱状图,可以统一规定坐标轴,又能显示超出坐标轴范围的值吗?

[复制链接]
发表于 2014-8-26 23:19:06 | 显示全部楼层 |阅读模式
GrADS
系统平台: windows
问题截图: -
问题概况: matlab柱状图,可以统一规定坐标轴,又能显示超出坐标轴范围的值吗?
我看过提问的智慧: 看过
自己思考时长(天): 5

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 兰北 于 2014-8-26 23:29 编辑

柱状1.jpg

想要做出这张图的效果,对比各个区域的变化,因此y轴的坐标值最好是统一的,但是由于y值大小差异较大,希望能将特别大的值突出显示出来。

自己做了试验,代码如下:
%设置柱状图的坐标轴范围
data = [1.7, 1.0, 0.565, 0.508, 0.081, 0.145];
b = bar(data);
set(gca,'XTickLabel',{'Sina all','Sina travel','S&S','STM','CHI','MI'})
axis([0 7 0.0 1.0]);
%axis ;
hold on;
%b = bar(data);
%set(gca,'box','off');
%set(gca,'clipping','on');

ylabel('micro F-measure');

显示的图形是
其实我想让1.7显示出来,高高突出的那种,但设定y轴范围后,就最大显示到1.0了,请教各位,改怎么设置呢?谢谢!

QQ截图20140826232203.jpg
密码修改失败请联系微信:mofangbao
发表于 2014-8-26 23:32:59 | 显示全部楼层
box off % remove the upper boundry
line(...) % draw horizontal lines to define a new one
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-27 08:34:53 | 显示全部楼层
沙颖凯 发表于 2014-8-26 23:32
box off % remove the upper boundry
line(...) % draw horizontal lines to define a new one

谢谢您的回复!
我尝试了一下,发现如果设置了axis([0 7 0.0 1.0]),画出的图纵坐标就无法突破1.0

我的代码如下:
%设置柱状图的坐标轴范围
data = [1.7, 1.0, 0.565, 0.508, 0.081, 0.145];
a = [1,2,3,4,5,6];
b = bar(data);
set(gca,'XTickLabel',{'Sina all','Sina travel','S&S','STM','CHI','MI'})
axis([0 7 0.0 1.0]);
axis ;
hold on;
%b = bar(data);
set(gca,'box','off');
line([1,1],[0,1.7],'linewidth',16) % draw horizontal lines to define a new one
ylabel('micro F-measure');
QQ截图20140827083513.jpg
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-27 08:35:42 | 显示全部楼层
沙颖凯 发表于 2014-8-26 23:32
box off % remove the upper boundry
line(...) % draw horizontal lines to define a new one

怎么办才比较好呢?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-27 09:39:47 | 显示全部楼层
经过试验,大概可以画出来了,谢谢 @沙颖凯
现将代码与大家分享
%设置柱状图的坐标轴范围
data = [1.7, 1.0, 0.565, 0.508, 0.081, 0.145];
a = [1,2,3,4,5,6];
b = bar(data,'r');
set(gca,'XTickLabel',{'Sina all','Sina travel','S&S','STM','CHI','MI'})
%axis([0 7 0.0 1.0]);
axis ;
hold on;

%b = bar(data);
set(gca,'box','off');
set(gca, 'yLim',[-1 2]);      % y轴的数据显示范围
set(gca,'yTick',[-1:3:1]);    % y轴的记号点
%set(gca, 'XGrid','on');      % X轴的网格
set(gca, 'yColor','w');     % y轴的颜色
line([0,7],[1,1],'linewidth',1,'color','k') % draw horizontal lines to define a new one
line([0,7],[0,0],'linewidth',1,'color','k') % draw horizontal lines to define a new one
line([0,7],[-1,-1],'linewidth',1,'color','k') % draw horizontal lines to define a new one
line([7,7],[-1,1],'linewidth',1,'color','k') % draw horizontal lines to define a new one
line([0,0],[-1,1],'linewidth',2,'color','k') % draw horizontal lines to define a new one
text(-0.4,-1,'-1')
text(-0.3,0,'0')
text(-0.3,1,'1')
%ylabel('micro F-measure');


111.jpg
密码修改失败请联系微信:mofangbao
发表于 2014-8-27 10:11:48 | 显示全部楼层
兰北 发表于 2014-8-26 17:34
谢谢您的回复!
我尝试了一下,发现如果设置了axis([0 7 0.0 1.0]),画出的图纵坐标就无法突破1.0

% An example:
figure('Color', 'w')
bar(1:10, (3:12).*10)
set(gca, 'YTick', [20:10:100 120], 'LineWidth', 1.5)
axis([0.5 10.5 20 120])
box off
line([0.5 10.5], [100 100], 'Color', 'k', 'LineWidth', 1.5)
line([10.5 10.5], [20 100], 'Color', 'k', 'LineWidth', 1.5)
捕获.PNG



密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-27 21:43:17 | 显示全部楼层
沙颖凯 发表于 2014-8-27 10:11
% An example:
figure('Color', 'w')
bar(1:10, (3:12).*10)

这样确实简洁明了,谢谢!但是最上面的120还是会出现,可以用这种方法消去吗
密码修改失败请联系微信:mofangbao
发表于 2014-8-27 21:45:09 | 显示全部楼层
set(gca, 'YTick', [20:10:100 120], 'LineWidth', 1.5) --> 'YTick', [20:10:100]
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-28 08:20:11 | 显示全部楼层
沙颖凯 发表于 2014-8-27 21:45
set(gca, 'YTick', [20:10:100 120], 'LineWidth', 1.5) --> 'YTick', [20:10:100]

真是太感谢了!论坛有您真好!
我还想能不能将100上面的坐标轴也消除,试着用一条白色的线将坐标轴覆盖,
增加了一句 line([0.5 0.5], [100.5 120], 'Color', 'w', 'LineWidth', 10)出来后坐标轴还是存在,只是变细了,难以消去——也就是说,分段显示坐标轴,能实现吗?
谢谢
QQ截图20140828081919.jpg

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表