0

私はこのようなヘルツスプルング・ラッセル図を作成しようとしています: 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軸の図になりますが、2番目の軸セットに関する情報が間違っています。問題は、このコードでは、軸の 2 番目のセットをデータに適応させず、選択した任意の点について、x2 と y2 の正しい値を提示しますが、x1 と y1 の値を間違って提示します。ウィキペディアのようなことをする方法のアイデアはありますか? 前もって感謝します

Hipparcos_stars2.xlsx の場合: http://www1.datafilehost.com/d/7d652c04

4

2 に答える 2

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 プロパティを に設定すると、2 番目の軸が透明になることに注意してください'none'。また、ポイントの分散を描画する正しい方法は、プロパティを'none'使用してマーカーを指定しながら、ライン プロパティを に設定すること'Marker'です。

linkpropまた、両方の軸の位置プロパティをリンクするために を使用していることにも注意してください。一方が変更されると、もう一方が変更されます。

于 2013-04-29T12:40:29.307 に答える
1

plotyy()外観を使用してカスタマイズできます。

h = plotyy(HRx_c,HRy_m,HRx_t,HRy_l,'plot','semilogy')
set(h(1),'ydir','reverse');
set(h(2),'xdir','reverse');
于 2013-04-29T12:34:35.677 に答える