我正在尝试像这样做一个Hertzsprung-Russell图:http://en.wikipedia.org/wiki/File:HRDiagram.png 我有4种不同类型的数据用于同一点(我们称之为x1,y1,x2,y2),我想把它们放在同一个图表中,显示4轴(其中2个像往常一样在底部和左边,其他2个顶部和右侧)。 我的代码:
filename = 'Hipparcos_stars2.xlsx';
sheet1 = 1;
xHRcolor = 'G2:G19920';
yHRmag = 'I2:I19920';
xHRtemp = 'J2:J19920';
yHRlum = 'K2:K19920';
HRx_c = xlsread(filename, sheet1, xHRcolor); % x1
HRy_m = xlsread(filename, sheet1, yHRmag); % y1
HRx_t = xlsread(filename, sheet1, xHRtemp); % x2
HRy_l = xlsread(filename, sheet1, yHRlum); % y2
figure(1)
ax1 = gca;
line(HRx_c,HRy_m, 'LineStyle', 'o', 'Color', 'k', 'MarkerSize', 1);
set(ax1,'ydir','reverse');
ax2 = axes('Position',get(ax1,'Position'),...
'XAxisLocation','top',...
'YAxisLocation','right');
line(HRx_t,log10(HRy_l),'LineStyle', 'o','Color','k','MarkerSize', 1,'Parent',ax2);
set(ax2,'xdir','reverse');
xlabel(ax1,'B-V color')
ylabel(ax1,'V Magnitude')
xlabel(ax2,'Temperature [ºK]')
ylabel(ax2,'Luminosity [log(L/Ls)]')
像这样我最终会得到一个带有4轴但有关第二组轴的错误信息的图形。问题是,使用此代码,它不会使第二组轴适应数据,并且对于我选择的任何点,它呈现正确的x2和y2值,但是x1和y1的值不正确。 知道如何在维基百科做点什么吗? 提前致谢
表示Hipparcos_stars2.xlsx:http://www1.datafilehost.com/d/7d652c04
答案 0 :(得分:1)
您可以使用plotyy()
然后自定义外观:
h = plotyy(HRx_c,HRy_m,HRx_t,HRy_l,'plot','semilogy')
set(h(1),'ydir','reverse');
set(h(2),'xdir','reverse');
答案 1 :(得分:1)
以下是您的代码,只需稍加修改即可使用:
%# some random data
x1 = linspace(0,1,100);
y1 = exp(x1) .* cos(x1);
x2 = linspace(10,100,100);
y2 = cumsum(rand(size(x2))-0.5);
%# plot
figure
hAx(1) = axes('YDir','reverse', 'XColor','b', 'YColor','b');
hAx(2) = axes('Position',get(hAx(1),'Position'), 'XDir','reverse', ...
'XAxisLocation','top', 'YAxisLocation','right', 'Color','none', ...
'XColor','r', 'YColor','r');
linkprop(hAx, 'Position');
line(x1,y1, 'Color','b', 'LineStyle','none', 'Marker','o', 'MarkerSize',2, ...
'Parent',hAx(1));
line(x2,y2, 'Color','r', 'LineStyle','none', 'Marker','.', 'MarkerSize',5, ...
'Parent',hAx(2));
xlabel(hAx(1), 'B-V color')
ylabel(hAx(1), 'V Magnitude')
xlabel(hAx(2), 'Temperature [ºK]')
ylabel(hAx(2), 'Luminosity [log(L/Ls)]')
请注意,通过将其color属性设置为'none'
,可使第二个轴变为透明。绘制点分散的正确方法是在使用'none'
属性指定标记时将线属性设置为'Marker'
。
另请注意使用linkprop
链接两个轴的位置属性,如果更改了一个,那么另一个跟随。