質問

3つのパラメーター x y および t があります。しかし、問題は私のファイル構造です。

ファイルの名前は次のとおりです:

e_x_y.txt
t_x_y.txt

e_x_y.txt には x および y の特定の値のエラーがあり、 t_x_y.txt には対応する時間値。

x vs y vs t グラフに e_x_y.txt の値をプロットする必要があります。

それを行う最良の方法は何ですか?

xとyの値がわかっているので、ファイル名からそれらを差し引く必要はありません。


より明確にするため、

私のファイルは次のとおりです:

e_4_5.txt
45
54
t_4_5.txt
2.0
6.0

e_7_8.txt
32
98
121
t_7_8.txt
2
9
1.0

次のポイントをプロットしたい:

(4,5,2.0) = 45
(4,5,6.0) = 54
(7,8,2.0) = 32 
(7,8,9.0) = 98
(7,8,1.0) = 121
役に立ちましたか?

解決

作成しようとしているプロットのタイプは、視覚化が難しい場合があります。私はあなたに2つの提案をすることができます:1つはあなたがしたいことであり、1つはおそらくあなたが代わりにすべきことです...

4-Dデータのプロット:

これを行うには、一連の x、y、t ポイントをプロットし、各ポイントでエラー値 e を何らかの方法で表す必要があります。これを行うには、ポイントの色またはサイズを変更します。この例では、エラーに基づいて変化する直径を持つ各ポイントで球体をプロットします(直径1は最大予想エラーに相当します)。色は時間を表します。質問に追加したサンプルデータを使用します( x y 5-by-4 マトリックスとしてフォーマットされます) code>、 t 、および e データ):

data = [4 5 2 45; 4 5 6 54; 7 8 2 32; 7 8 9 98; 7 8 1 121];
[x, y, z] = sphere;  % Coordinate data for sphere
MAX_ERROR = 121;     % Maximum expected error
for i = 1:size(data, 1)
  c = 0.5*data(i, 4)/MAX_ERROR;  % Scale factor for sphere
  X = x.*c+data(i, 1);           % New X coordinates for sphere
  Y = y.*c+data(i, 2);           % New Y coordinates for sphere
  Z = z.*c+data(i, 3);           % New Z coordinates for sphere
  surface(X, Y, Z, 'EdgeColor', 'none');  % Plot sphere
  hold on
end
grid on
axis equal
view(-27, 16);
xlabel('x');
ylabel('y');
zlabel('t');

次のようになります。

ここに画像の説明を入力してください

問題:プロットはちょっとおもしろそうですが、あまり直感的ではありません。また、この方法で多くのポイントをプロットすると、散らかってしまい、それらをすべてよく見るのが難しくなります。

より直感的な3次元プロット:

代わりに、データの3次元プロットを作成する方がよい場合があります。解釈しやすい場合があるためです。ここで、x軸は反復回数を表し、y軸は個々のネットワークを表します。

plot3(1:2, [1 1], [2 45; 6 54]);           % Plot data for network 4-5
hold on
plot3(1:3, [2 2 2], [2 32; 9 98; 1 121]);  % Plot data for network 7-8
xlabel('iteration number');
set(gca, 'YTick', [1 2], 'YTickLabel', {'network 4-5', 'network 7-8'})
grid on
legend('time', 'error')
view(-18, 30)

これにより、より明確なプロットが生成されます。

ここに画像の説明を入力してください

他のヒント

これがデータを視覚化する最良の方法であるとは確信していませんが、あなたが尋ねたようにそれを行う簡単な方法があります。単純な散布図で3Dポイントをプロットし、サイズまたは色を4番目の次元 error の値にマッピングできます。次のようなもの:

x = randi(20, [10 1]);
y = randi(20, [10 1]);
t = randi(10, [10 1]);
e = randi(200, [10 1]);

% map `e` to color
figure(1)
scatter3(x, y, t, 200, e, 'filled')
xlabel('x'), ylabel('y'), zlabel('t')
colormap(hot), colorbar

% map `e` to size
figure(2)
scatter3(x, y, t, e, 'filled')
xlabel('x'), ylabel('y'), zlabel('t')

color size

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top