This example shows how to plot data from a categorical array.
Load sample data gathered from 100 patients.
load patients
whosName Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
The workspace variable, Location, is a cell array of character vectors that contains the three unique medical facilities where patients were observed.
To access and compare data more easily, convert Location to a categorical array.
Location = categorical(Location);
Summarize the categorical array.
summary(Location)
County General Hospital 39
St. Mary's Medical Center 24
VA Hospital 37
39 patients were observed at County General Hospital, 24 at St. Mary's Medical Center, and 37 at the VA Hospital.
The workspace variable, SelfAssessedHealthStatus, contains four unique values, Excellent, Fair, Good, and Poor.
Convert SelfAssessedHealthStatus to an ordinal categorical array, such that the categories have the mathematical ordering Poor < Fair < Good < Excellent.
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus,... {'Poor' 'Fair' 'Good' 'Excellent'},'Ordinal',true);
Summarize the categorical array, SelfAssessedHealthStatus.
summary(SelfAssessedHealthStatus)
Poor 11
Fair 15
Good 40
Excellent 34
Create a histogram bar plot directly from a categorical array.
figure
histogram(SelfAssessedHealthStatus)
title('Self Assessed Health Status From 100 Patients')
The function histogram accepts the categorical array, SelfAssessedHealthStatus, and plots the category counts for each of the four categories.
Create a histogram of the hospital location for only the patients who assessed their health as Fair or Poor.
figure histogram(Location(SelfAssessedHealthStatus<='Fair')) title('Location of Patients in Fair or Poor Health')

Create a pie chart directly from a categorical array.
figure
pie(SelfAssessedHealthStatus);
title('Self Assessed Health Status From 100 Patients')
The function pie accepts the categorical array, SelfAssessedHealthStatus, and plots a pie chart of the four categories.
Create a Pareto chart from the category counts for each of the four categories of SelfAssessedHealthStatus.
figure
A = countcats(SelfAssessedHealthStatus);
C = categories(SelfAssessedHealthStatus);
pareto(A,C);
title('Self Assessed Health Status From 100 Patients')
The first input argument to pareto must be a vector. If a categorical array is a matrix or multidimensional array, reshape it into a vector before calling countcats and pareto.
Convert the cell array of character vectors to a categorical array.
Gender = categorical(Gender);
Summarize the categorical array, Gender.
summary(Gender)
Female 53
Male 47
Gender is a 100-by-1 categorical array with two categories, Female and Male.
Use the categorical array, Gender, to access Weight and Height data for each gender separately.
X1 = Weight(Gender=='Female'); Y1 = Height(Gender=='Female'); X2 = Weight(Gender=='Male'); Y2 = Height(Gender=='Male');
X1 and Y1 are 53-by-1 numeric arrays containing data from the female patients.
X2 and Y2 are 47-by-1 numeric arrays containing data from the male patients.
Create a scatter plot of height vs. weight. Indicate data from the female patients with a circle and data from the male patients with a cross.
figure h1 = scatter(X1,Y1,'o'); hold on h2 = scatter(X2,Y2,'x'); title('Height vs. Weight') xlabel('Weight (lbs)') ylabel('Height (in)')

bar | categorical | countcats | histogram | pie | rose | scatter | summary