24小时热门版块排行榜    

查看: 13556  |  回复: 12

hdu016

至尊木虫 (著名写手)

[交流] Matlab画图中Y坐标轴截断 已有7人参与

Matlab画图中Y坐标轴截断

最近看文献中有图是这样的,见下图,

注意看Y轴是被分开的,这个是用matlab画出来的吗?如果是,用什么样的命令啊,呵呵。

Matlab图
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

所谓运气,就是你自己的气自己在运,如果运的好就叫运气好。我们一生的努力只在证明我们有没有成功的运气。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

sogooda

金虫 (正式写手)

★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
xiegangmai: 金币+2, 谢谢应助! 2012-03-25 15:02:52
建议用origin,如果确有需要,可以试试如下的函数。
CODE:
function h=BreakPlot(x,y,y_break_start,y_break_end,break_type,y_arbitrary_scaling_factor)
% BreakPlot(x,y,y_break_start,y_break_end,break_type)
% Produces a plot who's y-axis skips to avoid unnecessary blank space
%
% INPUT
% x
% y
% y_break_start
% y_break_end
% break_type
%    if break_type='RPatch' the plot will look torn
%       in the broken space
%    if break_type='Patch' the plot will have a more
%       regular, zig-zag tear
%    if break_plot='Line' the plot will merely have
%       some hash marks on the y-axis to denote the
%       break
%
% EXAMPLE #1:
%
% NEW = 1;
% sampleTimes = [1:200];
% RPM = [600+rand(1,100)*500, 4500+rand(1,100)*2500];
% figure;
% % BreakPlot
% str = {'','Line','Patch','RPatch'};
% for i=1:4
%    subplot(2,2,i);
%    if i==1
%        plot(sampleTimes,RPM,'r.')
%        title('Plot');
%    else
%        if ~NEW
%            breakplot_old(sampleTimes,RPM,2000,4000,str{i});
%        else
%            breakplot(sampleTimes,RPM,2000,4000,str{i},40);
%        end;
%        title(sprintf('Breakplot %s',str{i}));
%    end;
% end;
%
%
% EXAMPLE #2:
%
% figure;
% subplot(4,4,[1:2 5:6]);
% BreakPlot(rand(1,21),[1:10,40:50],10,40,'Line');
% subplot(4,4,[3:4 7:8]);
% BreakPlot(rand(1,21),[1:10,40:50],10,40,'Patch');
% subplot(4,4,[9:10 13:14]);
% BreakPlot(rand(1,21),[1:10,40:50],10,40,'RPatch');
% x=rand(1,21);y=[1:10,40:50];
% subplot(4,4,11:12);plot(x(y>=40),y(y>=40),'.');
% set(gca,'XTickLabel',[]);
% subplot(4,4,15:16);plot(x(y<=20),y(y<=20),'.');
%
%
% IT'S NOT FANCY, BUT IT WORKS.

% Michael Robbins
% michaelrobbinsusenet@yahoo.com

% TEST DATA
if nargin<6 y_arbitrary_scaling_factor = 100.0; end;
if nargin<5 break_type='RPatch'; end;
if nargin<4 y_break_end=39; end;
if nargin<3 y_break_start=11; end;
if nargin<2 y=[1:10,40:50]; end;
if nargin<1 x=rand(1,21); end;

% SOME DFINITIONS
y_break_width = y_break_end - y_break_start;
y_break_mid   = y_break_width./2 + y_break_start;
y_range       = range(y);

% LOSE THE DATA IN THE BREAK, WE DON'T NEED IT ANYMORE
i =  y>y_break_start & y x(i)=[];
y(i)=[];

% MAP THE DATA
i = y >= y_break_end;
y2 = y - i.*y_break_width;

% PLOT THE MAPPED DATA
h    = plot(x,y,'.');
ylim = get(gca,'ylim');
h    = plot(x,y2,'.');
set(gca,'ylim',ylim-[0 y_break_width]);

% CREATE THE "BREAK" EFFECT
xlim = get(gca,'xlim');
xtick      = get(gca,'XTick');
ytick      = get(gca,'YTick');
yticklabel = get(gca,'yticklabel');

y_gap_width = y_range ./ y_arbitrary_scaling_factor;
y_half_gap = y_gap_width./2;
y_gap_mid  = y_break_start + y_half_gap;
switch break_type
   case 'Patch', i =  10.0;
   case 'RPatch',i = 100.0;
   case 'Line',  i =   2.0;
end;
x_half_tick = diff(xlim(1:2))./i;
switch break_type
   case {'Patch','RPatch'},
       xx = xlim(1) + x_half_tick.*[0:i];
       switch break_type
           case 'Patch',yy = repmat( ...
                   [y_gap_mid+y_half_gap y_gap_mid-y_half_gap],1,floor(i./2));
                   if length(yy)            case 'RPatch',yy = y_gap_mid + rand(101,1).*y_gap_width - y_half_gap;
       end;
       patch([xx(:);flipud(xx(:))], ...
           [yy(:)+y_half_gap ; flipud(yy(:)-y_half_gap)], ...
           [.8 .8 .8])
   case 'Line',
       x_half_tick = diff(xtick(1:2))./2;
       xx = [xlim(1) xlim(1)+x_half_tick];
       for i=0:2:2
           line(xx,y_gap_mid+([-1 2]+i).*y_gap_width./2);
       end;
end;
set(gca,'xlim',xlim);

% MAP TICKS BACK
i_wrong_ticks = ytick > y_break_start;
ytick = ytick + i_wrong_ticks.*y_break_width;
integer_ticks = all(floor(ytick) == ytick);
label_width = size(yticklabel,2);
if integer_ticks
   format_string = sprintf('%%%dd\n',label_width);
else
   left_side = ceil(log10(max(ytick)));
   right_side = label_width-left_side-1;
   format_string = sprintf('%%%d.%df\n',label_width,right_side);
end;
set(gca, 'yticklabel', num2str(ytick'));

5楼2012-03-25 11:50:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

ziyoude

银虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
是个问题,等我查查资料有没有这样的方法啊。
宽容比自由更重要.
2楼2012-03-21 12:23:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virty76

铁杆木虫 (著名写手)


xiegangmai: 金币+1, 谢谢参与! 2012-03-21 17:26:49
可以用origin画
3楼2012-03-21 16:09:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hdu016

至尊木虫 (著名写手)

十分感谢,我先学习下origin吧。
所谓运气,就是你自己的气自己在运,如果运的好就叫运气好。我们一生的努力只在证明我们有没有成功的运气。
4楼2012-03-21 19:17:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hdu016

至尊木虫 (著名写手)

太感谢了!!!!!
所谓运气,就是你自己的气自己在运,如果运的好就叫运气好。我们一生的努力只在证明我们有没有成功的运气。
6楼2012-03-25 22:46:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fannis

金虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
上面那些个程序代码你们都能明白???
爱生活爱媳妇儿~
7楼2013-09-19 01:44:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

外来户

银虫 (正式写手)

引用回帖:
5楼: Originally posted by sogooda at 2012-03-25 11:50:54
建议用origin,如果确有需要,可以试试如下的函数。

function h=BreakPlot(x,y,y_break_start,y_break_end,break_type,y_arbitrary_scaling_factor)
% BreakPlot(x,y,y_break_start,y_break_end,break_type)
% ...

学习了
8楼2013-09-19 09:33:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zwei1563

木虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
你好,你这个问题能在matlab中解决吗?
相信自己能行
9楼2014-10-24 20:35:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hdu016

至尊木虫 (著名写手)

引用回帖:
9楼: Originally posted by zwei1563 at 2014-10-24 20:35:16
你好,你这个问题能在matlab中解决吗?

比较困难

[ 发自小木虫客户端 ]
所谓运气,就是你自己的气自己在运,如果运的好就叫运气好。我们一生的努力只在证明我们有没有成功的运气。
10楼2014-10-25 06:56:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hdu016 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 ASdOkHsho7FD 2026-08-28 5/250 2026-08-30 00:41 by ZPa0EcMwuECS
[基金申请] 投票:  有多少人是今天查系统知道结果的? +16 爱看书的可乐 2026-08-26 18/900 2026-08-30 00:33 by winsaint
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +6 ASdOkHsho7FD 2026-08-28 12/600 2026-08-30 00:31 by ZPa0EcMwuECS
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-29 21:44 by 4qO8zhfjr2AX
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 8/400 2026-08-29 17:22 by 4FFAWE8HcgUD
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +9 苏东坡二世 2026-08-23 9/450 2026-08-29 14:41 by hustersqt
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 ASdOkHsho7FD 2026-08-28 4/200 2026-08-29 14:02 by jCd0dEvKHShX
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 申请删除本帖 +6 lyz123lyz 2026-08-27 7/350 2026-08-27 17:31 by 宁静致远sy
[基金申请] 基金未中,这种答复是模板吗? +5 zhaosm1982 2026-08-27 6/300 2026-08-27 16:00 by lfy8008
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +7 process2012 2026-08-23 10/500 2026-08-26 19:23 by hmhminy
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
信息提示
请填处理意见