필터 지우기
필터 지우기

Recreate plot from image

조회 수: 2 (최근 30일)
Cliff Karlsson
Cliff Karlsson 2018년 9월 18일
답변: Nicole Peltier 2018년 9월 18일
How can I recreate the plot in the picture? I just want to understand how to add multiple axes and how to scale every axis to different values.
I have created this:
clear
load carbig.mat
colors = [[0 0 0]; [0 0 0]; [1 0 0]; [0 1 0]; [1 0.5 0]; [1 0 1]; [0 0 0]; [0 0 1]];
data = [MPG Horsepower Weight Acceleration Displacement Cylinders*500];
labels = {'MPG', 'Horsepower', 'Weight', 'Acceleration', 'Displacement', 'Cylinders'};
lineobjects = parallelcoords(data, 'Labels',labels)
for i=1:length(lineobjects)
lineobjects(i).Color = colors((lineobjects(i).YData(6)/500),:)
%lineobjects(i).Color(4) = .15;
end

채택된 답변

Nicole Peltier
Nicole Peltier 2018년 9월 18일
You need to scale each parameter (MPG, Horsepower, etc.) by the maximum value of each parameter. I used repmat in my code so that the scaling could be done in a single line instead of a for-loop.
% Find maximum value for each variable
% Use repmat to allow for vectorization (faster computation)
column_max = repmat(max(data), size(data, 1), 1);
% Scale data so that max value for each variable = 1
data_scaled = data./column_max;
h = figure();
set(h,'DefaultAxesColorOrder',[1 0 0; 0 1 0; 1 1 0; 1 0 1; 0 0 1]);
lineobjects = parallelcoords(data_scaled,'Group',Cylinders,'Labels',labels);
The code above will produce the following figure (not an exact replica of the figure you sent, but you can mess around with annotations and axis labels):
Hope this helps!

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Printing and Saving에 대해 자세히 알아보기

태그

제품


릴리스

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by