문제

세 가지 매개 변수가 있습니다 x,y 그리고 t. 그러나 문제는 내 파일 구조입니다.

내 파일은 다음과 같이 이름을 지정합니다.

e_x_y.txt
t_x_y.txt

어디 e_x_y.txt 특정 값에 대한 오류가 있습니다 x 그리고 y 그리고 t_x_y.txt 해당 시간 값이 있습니다.

값을 표시해야합니다 e_x_y.txt a x vs y vs t 그래프.

그렇게하는 가장 좋은 방법은 무엇입니까?

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
도움이 되었습니까?

해결책

당신이 만들려고하는 줄거리의 유형은 잘 시각화하기 어려울 수 있습니다. 나는 당신에게 두 가지 제안을 할 수 있습니다 : 하나는 당신입니다 원하다, 하나는 당신이 아마 대신해야 할 일입니다 ...

4D 데이터 플롯 :

이를 위해서는 일련의 x,y,t 포인트 및 어떻게 든 오차 값을 나타냅니다 e 각 지점에서. 포인트의 색상이나 크기를 변경하여이를 수행 할 수 있습니다. 이 예에서는 각 지점에서 오류에 따라 변하는 직경으로 구체를 플로팅합니다 (1의 직경은 최대 예상 오차와 동일합니다). 색상은 시간을 나타냅니다. 질문에 추가 한 샘플 데이터를 사용하겠습니다 (형식으로 형식으로 5 x 4 컬럼이 포함 된 매트릭스 x, y, 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');

그리고 다음은 다음과 같습니다.

enter image description here

문제 : 줄거리는 흥미로워 보이지만 그다지 직관적이지는 않습니다. 또한, 이런 식으로 많은 지점을 플로팅하면 혼란스러워지고 모두 잘보기 어려울 것입니다.

보다 직관적 인 3D 플롯 :

해석하기가 더 쉬울 수 있으므로 데이터의 3D 플롯을 만드는 것이 더 나을 수 있습니다. 여기서 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)

이것은 훨씬 더 명확한 플롯을 생성합니다.

enter image description here

다른 팁

비록 이것이 데이터를 시각화하는 가장 좋은 방법을 확신하지는 않지만, 데이터를 요청했던대로 데이터를 수행하는 간단한 방법이 있습니다. 간단한 산점도로 3D 포인트를 플로팅하고 크기 또는 색상을 네 번째 차원의 값에 매핑 할 수 있습니다. 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