首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置日志标度时的版权图例和面书问题

设置日志标度时的版权图例和面书问题
EN

Stack Overflow用户
提问于 2016-05-20 11:53:37
回答 1查看 66关注 0票数 1

我有以下绘制图片的代码:

代码语言:javascript
复制
%scamp data
[flipedBV, flipeddepth] = flipit(depthi, BVsurf_int_ens);

i=linspace(0,5,100);
edges_eps=10.^(-i); 
logedg_BV= log10(fliplr(edges_eps)); 

[n_BV,xout_BV] = histc(histazza(log10(flipedBV)), logedg_BV);

x = logedg_BV;

%model data
[n_BVn,xout_BVn] = histc(histazza(log10(sqrt(-BVsurf_Num_ens))), logedg_BV);

BVsurfF = figure;hold on
h=area(x,n_BV/sum(n_BV),'facecolor',[1 0 0]);  %%red area where the problem gonna be

legend('SCAMP')
xlabel('$$ N~[1/s]$$','Interpreter','latex','fontsize',18)
set(gca,'fontsize',14,'ygrid','on')
alpha(.5)  %%translucency of the red area

%%add new data
addLineToFig('KEPflu', [0 0 1], BVsurfF, 'BVsurf_Num_ens', logedg_BV);

addLineToFig('KEPflu2', [0 1 1], BVsurfF, 'BVsurf_Num_ens', logedg_BV);

addLineToFig('GASflu', [0 0 0], BVsurfF, 'BVsurf_Num_ens', logedg_BV);

addLineToFig('GASflu2', [1 0 1 ], BVsurfF, 'BVsurf_Num_ens', logedg_BV);

addLineToFig('EPSmin', [1 1 0], BVsurfF, 'BVsurf_Num_ens', logedg_BV);

addLineToFig('GASmin', [.5 .5 0], BVsurfF, 'BVsurf_Num_ens', logedg_BV);

addLineToFig('canuto', [.5 .5 .5]', BVsurfF, 'BVsurf_Num_ens', logedg_BV);

子例程addLineToFig包括:

代码语言:javascript
复制
function addLineToFig(name, ccol, fighandle, variab, x)%, flippo, depthi)

cd(['E:\SIMULATIONS\',name,'\COMPARED\ensamble']);
load([name,'_ensamble'], variab);


[n_BVn, xout_BVn] = histc(histazza(log10(sqrt(-BVsurf_Num_ens))), x); %%new data

figure(fighandle)

[LEGHbv,OBJHbv,OUTHbv,OUTMbv] = legend; 
P=plot(x,n_BVn/sum(n_BVn),'color',ccol,'linewidth',2); %%plot new data
legend([OUTHbv;P],OUTMbv{:},name) %%update legend

end

基本上,我创建一个红色区域的地块,然后用addLineToFig添加数据,并正确地获得:

当我试图复制这个数字时,问题就出现了:

代码语言:javascript
复制
h1=gcf;
h2=figure;  
objects=allchild(h1);
copyobj(get(h1,'children'),h2);
set(gca,'yscale','log')

正如你所看到的,红色分布的半透明是不重复的,图例也有一些问题。

问题似乎是我将yscale设置为日志的最后一行。如果我评论它的话,代码可以正常工作。有人知道解决办法吗?

最小码

代码语言:javascript
复制
i=linspace(0,5,100);
edges_eps=10.^(-i); 
logedg_BV= log10(fliplr(edges_eps)); 

a = 1e-5;
b = 1e-2;
r = (b-a).*rand(1000,1) + a;


[n_BV,xout_BV] = histc(histazza(log10(r)), logedg_BV);

x = logedg_BV;

%model data
r2 = (b-a).*rand(1000,1) + a;
[n_BVn,xout_BVn] = histc(histazza(log10(r2)), logedg_BV);

BVsurfF = figure;hold on
h=area(x,n_BV/sum(n_BV),'facecolor',[1 0 0]);  %%red area where the problem gonna be

legend('SCAMP')
xlabel('$$ N~[1/s]$$','Interpreter','latex','fontsize',18)
set(gca,'fontsize',14,'ygrid','on')
alpha(.5)  %%translucency of the red area

%%add new data
r3 = (b-a).*randn(1000,1) + a;
[n_BVn,xout_BVn] = histc(histazza(log10(r3)), logedg_BV);

figure(BVsurfF) 
[LEGHbv,OBJHbv,OUTHbv,OUTMbv] = legend;
P=plot(x,n_BVn/sum(n_BVn),'color','k','linewidth',2);
legend([OUTHbv;P],OUTMbv{:},'data2')

%%add new data
r4 = (b-a).*rand(1000,1) + a;
[n_BVn,xout_BVn] = histc(histazza(log10(r4)), logedg_BV);

figure(BVsurfF) 
[LEGHbv,OBJHbv,OUTHbv,OUTMbv] = legend;
P=plot(x,n_BVn/sum(n_BVn),'color','y','linewidth',2);
legend([OUTHbv;P],OUTMbv{:},'data3')




h1=gcf;
h2=figure;  
objects=allchild(h1);
copyobj(get(h1,'children'),h2);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 11:37:26

我通过将原始图形的渲染器设置为“OpenGL”来解决这个问题:

代码语言:javascript
复制
set(BVsurfF,'renderer','OpenGL')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37346074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档