Main Content

평행좌표 플롯을 사용하여 테이블 데이터 탐색하기

이 예제에서는 파일을 MATLAB®에 테이블로 가져와서, 테이블 형식 데이터에서 평행좌표 플롯을 생성하고, 플롯 모양을 수정하는 방법을 보여줍니다.

평행좌표 플롯은 여러 열을 갖는 테이블 형식 데이터나 행렬 데이터를 시각화하는 데 유용합니다. 입력 데이터의 행은 플롯의 선에 해당하고 입력 데이터의 열은 플롯의 좌표에 해당합니다. 플롯의 선을 그룹화하면 데이터의 추세를 더 잘 확인할 수 있습니다.

파일을 테이블로 가져오기

2015년 1월부터 2016년 7월까지의 평균 일일 온도가 포함된 표본 파일 TemperatureData.csv를 불러옵니다. 파일을 테이블로 읽어오고 처음 몇 개 행을 표시합니다.

tbl = readtable('TemperatureData.csv');
head(tbl)
    Year       Month       Day    TemperatureF
    ____    ___________    ___    ____________

    2015    {'January'}     1          23     
    2015    {'January'}     2          31     
    2015    {'January'}     3          25     
    2015    {'January'}     4          39     
    2015    {'January'}     5          29     
    2015    {'January'}     6          12     
    2015    {'January'}     7          10     
    2015    {'January'}     8           4     

기본 평행좌표 플롯 만들기

테이블의 처음 몇 개 행에서 평행좌표 플롯을 만듭니다. 플롯의 각 선은 테이블의 행 하나에 해당합니다. 기본적으로 parallelplot은 테이블의 모든 좌표 변수를 테이블에 나타나는 것과 동일한 순서로 표시합니다. 해당하는 좌표 눈금자 아래에 좌표 변수 이름이 표시됩니다.

플롯을 보면 테이블의 처음 8개 행이 2015년 1월 처음 8일 동안의 온도 데이터를 제공함을 알 수 있습니다. 예를 들어, 8일 중 여덟 번째 날이 평균적으로 가장 추웠습니다.

parallelplot(head(tbl))

Figure contains an object of type parallelplot.

기본적으로 MATLAB은 플롯을 쉽게 해석할 수 있도록 좌표 눈금자를 따라 플롯 선이 완전히 중첩되지 않도록 데이터를 임의로 벌려 보여줍니다. 이를 지터링이라고 합니다. 예를 들어, 처음 8개의 관측값이 동일한 Year 값과 Month 값을 갖더라도 Year 좌표 눈금자의 2015 눈금이나 Month 좌표 눈금자의 January 눈금에서 플롯 선은 동일한 선상에 놓이지 않습니다. 지터링은 모든 좌표 변수에 눈금 간 거리를 고려하여 영향을 주며, 종종 범주형 좌표 눈금자의 경우에는 더 눈에 띄는 영향을 줍니다. Jitter 속성을 설정하여 플롯의 지터링 정도를 제어할 수 있습니다.

Year 좌표 눈금자의 일부 눈금은 무의미한 소수점 이하 값입니다. 좌표 눈금자의 눈금이 유의미한 값에만 대응하도록 하려면 categorical 함수를 사용하여 변수를 범주형 변수로 변환하십시오.

tbl.Year = categorical(tbl.Year);

이제 전체 테이블을 사용하여 평행좌표 플롯을 만듭니다. ParallelCoordinatesPlot 객체를 변수 p에 할당하고 플롯을 만든 후 p를 사용하여 수정합니다. 예를 들어, Title 속성을 사용하여 플롯에 제목을 추가해 보겠습니다.

p = parallelplot(tbl)
p = 
  ParallelCoordinatesPlot with properties:

            SourceTable: [565x4 table]
    CoordinateVariables: {'Year'  'Month'  'Day'  'TemperatureF'}
          GroupVariable: ''

  Use GET to show all properties

p.Title = 'Temperature Data';

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

플롯 선 그룹화하기

GroupVariable 속성을 설정하여 Year 값 기준으로 플롯의 선을 그룹화합니다. 기본적으로 MATLAB은 플롯에 범례를 추가합니다. LegendVisible 속성을 'off'로 설정하여 범례를 제거할 수 있습니다.

p.GroupVariable = 'Year';

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

대화형 방식으로 좌표 변수 재배열하기

좌표 변수를 더욱 쉽게 비교하여 플롯에 남길 변수를 결정할 수 있도록 대화형 방식으로 재배열해 보겠습니다.

Figure 창에서 플롯을 여십시오. 좌표 눈금 레이블을 클릭하고 연결된 좌표 눈금자를 원하는 위치로 끌어서 놓습니다. 선택된 좌표 눈금자는 검은색 사각형으로 표시됩니다. 예를 들어, Month 좌표 눈금 레이블을 클릭하고 좌표 눈금자를 오른쪽으로 끌어서 놓을 수 있습니다. 그런 다음 Month 값과 TemperatureF 값을 쉽게 비교할 수 있습니다.

좌표 변수를 대화형 방식으로 재배열하면 플롯의 연결된 CoordinateTickLabels, CoordinateVariablesCoordinateData 속성이 업데이트됩니다.

추가적인 상호 작용 옵션은 Tips 항목을 참조하십시오.

좌표 변수 중 일부 선택하기

p.SourceTable에 있는 좌표 변수의 일부를 표시하고 pCoordinateVariables 속성을 설정하여 플롯에서 좌표 변수의 순서를 지정합니다.

구체적으로 설명하자면, 플롯에서 Day 변수를 제거하고 소스 테이블의 네 번째 열에 있는 TemperatureF 변수를 플롯의 두 번째 좌표로 표시합니다.

p.CoordinateVariables = [1 4 2];

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

또는 선택한 변수에 대해 변수 이름으로 구성된 string형 배열이나 셀형 배열 또는 true 요소를 갖는 논리형 벡터를 사용하여 CoordinateVariables 속성을 설정할 수 있습니다.

좌표 변수의 범주 수정하기

Month에 일부 범주를 표시하고 플롯의 좌표 눈금자를 따라 범주 순서를 변경합니다.

일부 월에는 두 연도 중 한 연도에 대한 데이터만 있으므로, 소스 테이블에서 이러한 특이한 월에 해당하는 행을 제거합니다. 소스 테이블이 변경되면 MATLAB에서 플롯을 업데이트합니다.

uniqueMonth = {'September','October','November','December','August'};
uniqueMonthIdx = ismember(p.SourceTable.Month,uniqueMonth);
p.SourceTable(uniqueMonthIdx,:) = [];

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

소스 테이블을 업데이트하여 Month 좌표 눈금자에 월을 시간 순으로 정렬합니다.

categoricalMonth = categorical(p.SourceTable.Month);
newOrder = {'January','February','March','April','May','June','July'};
orderMonth = reordercats(categoricalMonth,newOrder);
p.SourceTable.Month = orderMonth;

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

비닝된 값을 사용하여 플롯 선 그룹화하기

각 월의 온도 범위를 더 잘 시각화하려면 discretize를 사용하여 온도 데이터를 비닝하고 비닝된 값을 사용하여 플롯의 선을 그룹화하십시오. 소스 테이블의 최소 온도와 최대 온도를 확인합니다. 이러한 값을 포함하도록 Bin 경계값을 설정합니다.

min(p.SourceTable.TemperatureF)
ans = -3
max(p.SourceTable.TemperatureF)
ans = 80
binEdges = [-3 10:10:80];
bins = {'00s+/-','10s','20s','30s','40s','50s','60s','70s+'};
groupTemperature = discretize(p.SourceTable.TemperatureF, ...
    binEdges,'categorical',bins);

비닝된 온도를 소스 테이블에 추가합니다. 비닝된 온도 데이터에 따라 플롯의 선을 그룹화합니다.

p.SourceTable.GroupTemperature = groupTemperature;
p.GroupVariable = 'GroupTemperature';

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

GroupTemperature에는 8개 이상의 범주가 포함되어 있으므로 일부 그룹은 플롯에서 색이 같습니다. Color 속성을 설정하여 모든 그룹에 각기 다른 색을 할당합니다.

p.Color = jet(8);

Figure contains an object of type parallelplot. The chart of type parallelplot has title Temperature Data.

참고 항목

함수

속성