24小时热门版块排行榜    

查看: 1654  |  回复: 7

Samuel_wang

银虫 (小有名气)

[求助] 多曲线标注问题

本人已经完成曲线的绘制,但是想要获得目标图片(图片1)中的标注(如每条曲线上均有的标注),以及各个箭头,在matlab的程序中该如何改进,附上已完成的代码及图片~~
%Band structures of In_{1-x}Ga_xAs with spin-orbit,x=0.6
clf
clear
m0=5.685777e-16; hb=6.579465e-16; %m0[eV s^2 cm^-2]; hb[eV s]
hm=hb^2/(2*m0);                      %hm=2.444569163651616e-16[eV cm^2];
a=5.8688132e-8; %a[cm]
kbz=2*pi/a;  %kbz[cm^-1]
P=-0.00952269;Q=0.032869;f1=1.31512721;f2=-0.3151272;
r1=12.27; r2=4.58; r3=5.38;de=0.356;
A=-hm*r1; B=hm*r2; %A&B[ev cm^2]
kx=-0.5*kbz:0.00005*kbz:0.5*kbz; %kx[cm^-1]
kz=kx;
Ehh0=-P-Q;
Elhx0=-P+0.5*(Q-de+sqrt(de.^2+2*de*Q+9*Q.^2));
Esox0=-P+0.5*(Q-de-sqrt(de.^2+2*de*Q+9*Q.^2));
Ehhx=Ehh0-hm*((r1+r2)*kx.^2);
Ehhz=Ehh0-hm*((r1-2*r2)*kz.^2);
Elhx=Elhx0-hm*((r1-f1*r2)*kx.^2);
Elhz=Elhx0-hm*((r1+2*f1*r2)*kz.^2);
Esox=Esox0-hm*(r1-f2*r2)*kx.^2;
Esoz=Esox0-hm*(r1+2*f2*r2)*kz.^2;
plot(kx*1e-8,Ehhx,kx*1e-8,Elhx,kx*1e-8,Esox,...
     kx*1e-8,Ehhz,kx*1e-8,Elhz,kx*1e-8,Esoz,'LineWidth',1.5)
line([-0.05 0.05],[0 0],'Linestyle','--','LineWidth',1.5,'Color','k')
line([0 0],[-0.45 0.05],'Linestyle','-','LineWidth',1.5,'Color','k')
line([-0.015 0.015],[-P -P],'Linestyle','-','LineWidth',1.5)
text(-0.02,0.01,'\fontsize{10}\bf{-P_{\epsilon}}')
axis([-0.05,0.05,-0.45,0.05])
title('Band structures of In_{1-x}Ga_xAs with spin-orbit,x=0.6')
xlabel('k_x,k_z,(2\pi/a)')
ylabel('Ec(k_x),Elh(k_x),Ehh(k_x),Elh(k_z),Ehh(k_z),Eso(k_x),Eso(k_z)')




目标图片(有标注)



已获得图片(无标注)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wsh912

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★
xiegangmai: 金币+2, 谢谢参与! 2012-06-14 22:45:21
Samuel_wang: 金币+2 2012-09-06 08:30:27
只有文字的可以用Insert--textbox,输入内容后linstyle选择none去掉边框。对于有箭头的,Insert-text Arrow,输入内容即可
2楼2012-06-14 20:32:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Samuel_wang

银虫 (小有名气)

这个答案... 不太满意~~还是送两个金币吧~~
3楼2012-09-06 08:30:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

你不嫌麻烦么,直接用个legend得了
showmethemoney
4楼2012-09-06 10:05:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

一个一个的加给个例子
axes
x = [0.7698 0.5851];
y = [0.3593 0.5492];
% Create the textarrow object:
txtar = annotation('textarrow',x,y,...
                   'String','We are here.','FontSize',14);
showmethemoney
5楼2012-09-06 10:12:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Samuel_wang

银虫 (小有名气)

那个x,y是指坐标轴,对吧?
那是不是通过稍微观察得到的值?
6楼2012-09-06 19:16:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

在你代码里加标注的语句前添加 h=,即写成 "句柄=" 的形式就可以了啊。以后要操作哪个标注,就对哪个句柄进行操作即可。
比如下图

代码如下:
clc; clear;

figure1=figure(1);
x=-10:0.1:10;
y=x.^2+10;
plot(x,y);
Ylim([0 50]);
h_arrow=annotation(figure1,'arrow',[0.2625 0.351785714285714],...
    [0.320428571428571 0.45]);
h_text=annotation(figure1,'textbox',...
    [0.193857142857143 0.25952380952381 0.0704285714285714 0.0761904761904773],...
    'String',{'y=x^2'},...
    'FitBoxToText','off',...
    'LineStyle','none');

要操作箭头和公式标注,只需要改h_arrow 和 h_text 后的内容即可.

73.jpg

我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
7楼2012-09-06 19:35:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

比如要把箭头改成红色的,只需加代码:
set(h_arrow,'color','r');  完事
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
8楼2012-09-06 19:38:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Samuel_wang 的主题更新
信息提示
请填处理意见