boxchart

Создайте график поля (диаграмма)

Описание

пример

boxchart(ydata) создает график поля или диаграмму, для каждого столбца матричного ydata. Если ydata вектор, затем boxchart создает один график поля.

Каждый график поля отображает следующую информацию: медиана, более низкие и верхние квартили, любые выбросы (вычисленное использование межквартильного размаха), и минимальные и максимальные значения, которые не являются выбросами. Для получения дополнительной информации см. График Поля (Диаграмма).

пример

boxchart(xgroupdata,ydata) группирует данные в векторном ydata согласно уникальным значениям в xgroupdata и графики каждая группа данных как отдельный график поля. xgroupdata определяет положение каждого графика поля вдоль оси X. ydata должен быть вектор и xgroupdata должен иметь ту же длину как ydata.

пример

boxchart(___,Name,Value) задает дополнительные опции графика с помощью одного или нескольких аргументов пары "имя-значение". Например, можно сравнить демонстрационные медианы с помощью меток путем определения 'Notch','on'. Задайте аргументы пары "имя-значение" после всех других входных параметров. Для списка свойств смотрите BoxChart Properties.

пример

boxchart(ax,___) графики в оси заданы ax вместо в текущую систему координат (gca). Аргумент ax может предшествовать любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

b = boxchart(___) возвращает BoxChart объект. Используйте b установить свойства графиков поля после создания их. Для списка свойств смотрите BoxChart Properties.

Примеры

свернуть все

Создайте один график поля от вектора возрастов. Используйте график поля, чтобы изучить распределение возрастов.

Загрузите patients набор данных. Age переменная содержит возрасты 100 пациентов. Создайте график поля, чтобы визуализировать распределение возрастов.

load patients
boxchart(Age)
ylabel('Age (years)')

Средний терпеливый возраст 39 лет показывается линией в поле. Более низкие и верхние квартили 32 и 44 лет показываются нижней частью и верхними краями поля, соответственно. Конечные точки контактного усика соответствуют самым молодым и самым старым пациентам. Самому молодому пациенту 25 лет, и самому старому 50 лет. Набор данных не содержит выбросов, которые были бы представлены маленькими кругами.

Можно использовать всплывающие подсказки, чтобы получить сводные данные статистики данных. Наведите на график поля, чтобы видеть всплывающую подсказку.

Используйте графики поля, чтобы сравнить распределение значений вдоль столбцов и строк магического квадрата.

Создайте магический квадрат с 10 строками и 10 столбцами.

Y = magic(10)
Y = 10×10

    92    99     1     8    15    67    74    51    58    40
    98    80     7    14    16    73    55    57    64    41
     4    81    88    20    22    54    56    63    70    47
    85    87    19    21     3    60    62    69    71    28
    86    93    25     2     9    61    68    75    52    34
    17    24    76    83    90    42    49    26    33    65
    23     5    82    89    91    48    30    32    39    66
    79     6    13    95    97    29    31    38    45    72
    10    12    94    96    78    35    37    44    46    53
    11    18   100    77    84    36    43    50    27    59

Создайте график поля для каждого столбца магического квадрата. Каждый столбец имеет подобное среднее значение (вокруг 50). Однако первые пять столбцов Y имейте большие межквартильные размахи, чем последние пять столбцов Y. Межквартильный размах является расстоянием между верхним квартилем (верхний край поля) и более низким квартилем (базовый край поля).

boxchart(Y)
xlabel('Column')
ylabel('Value')

Создайте график поля для каждой строки магического квадрата. Каждая строка имеет подобный межквартильный размах, но средние значения отличаются через строки.

boxchart(Y')
xlabel('Row')
ylabel('Value')

Постройте величины землетрясений согласно месяцу, в котором они произошли. Используйте вектор величин землетрясения и сгруппированной переменной, указывающей на месяц каждого землетрясения. Для каждой группы данных создайте график поля и поместите ее в заданное положение вдоль оси X.

Считайте набор данных о цунами в рабочую область как таблица. Набор данных включает информацию о землетрясениях, а также других причинах цунами. Отобразите первые восемь строк, показав месяц, причину и столбцы величины землетрясения таблицы.

tsunamis = readtable('tsunamis.xlsx');
tsunamis(1:8,["Month","Cause","EarthquakeMagnitude"])
ans=8×3 table
    Month          Cause           EarthquakeMagnitude
    _____    __________________    ___________________

     10      {'Earthquake'    }            7.6        
      8      {'Earthquake'    }            6.9        
     12      {'Volcano'       }            NaN        
      3      {'Earthquake'    }            8.1        
      3      {'Earthquake'    }            4.5        
      5      {'Meteorological'}            NaN        
     11      {'Earthquake'    }              9        
      3      {'Earthquake'    }            5.8        

Создайте таблицу earthquakes, который содержит данные для цунами, вызванных землетрясениями.

unique(tsunamis.Cause)
ans = 8×1 cell
    {0×0 char                  }
    {'Earthquake'              }
    {'Earthquake and Landslide'}
    {'Landslide'               }
    {'Meteorological'          }
    {'Unknown Cause'           }
    {'Volcano'                 }
    {'Volcano and Landslide'   }

idx = contains(tsunamis.Cause,'Earthquake');
earthquakes = tsunamis(idx,:);

Сгруппируйте величины землетрясения на основе месяца, в котором произошли соответствующие цунами. В течение каждого месяца отобразите отдельный график поля. Например, boxchart использует четвертые, пятые, и восьмые величины землетрясения, а также других, чтобы создать третий график поля, который соответствует третьему месяцу.

boxchart(earthquakes.Month,earthquakes.EarthquakeMagnitude)
xlabel('Month')
ylabel('Earthquake Magnitude')

Заметьте, что, потому что значения месяца являются числовыми, линейка оси X является также числовой.

Для более описательных имен месяца преобразуйте earthquakes.Month столбец к categorical переменная.

monthOrder = ["Jan","Feb","Mar","Apr","May","Jun","Jul", ...
    "Aug","Sep","Oct","Nov","Dec"];
namedMonths = categorical(earthquakes.Month,1:12,monthOrder);

Создайте те же графики поля как прежде, но используйте categorical переменная namedMonths вместо числовых значений месяца. Линейка оси X является теперь категориальной, и порядок категорий в namedMonths определяет порядок графиков поля.

boxchart(namedMonths,earthquakes.EarthquakeMagnitude)
xlabel('Month')
ylabel('Earthquake Magnitude')

Группа медицинские пациенты на основе их возраста, и для каждой возрастной группы, создает график поля диастолических значений кровяного давления.

Загрузите patients набор данных. Age и Diastolic переменные содержат возрасты и диастолические уровни кровяного давления 100 пациентов.

load patients

Сгруппируйте пациентов в пять интервалов возраста. Найдите минимальные и максимальные возрасты, и затем разделите область значений между ними в пятилетние интервалы. Интервал значения в Age переменная при помощи discretize функция. Используйте имена интервала в bins. Получившийся groupAge переменной является categorical переменная.

min(Age)
ans = 25
max(Age)
ans = 50
binEdges = 25:5:50;
bins = {'late 20s','early 30s','late 30s','early 40s','late 40s+'};
groupAge = discretize(Age,binEdges,'categorical',bins);

Создайте график поля для каждой возрастной группы. Каждый график поля показывает диастолические значения кровяного давления пациентов в той группе.

boxchart(groupAge,Diastolic)
xlabel('Age Group')
ylabel('Diastolic Blood Pressure')

Объедините две сгруппированных переменные в одну и используйте переменную, чтобы сгруппировать и расположить получившиеся графики поля.

Загрузите файл примера TemperatureData.csv, который содержит среднесуточные температуры с января 2015 до июля 2016. Считайте файл в таблицу.

tbl = readtable('TemperatureData.csv');

Преобразуйте tbl.Month и tbl.Year переменные к categorical переменные. Задайте порядок категорий в каждой переменной.

monthOrder = {'January','February','March','April','May','June','July', ...
    'August','September','October','November','December'};
yearOrder = [2015 2016];
tbl.Month = categorical(tbl.Month,monthOrder);
tbl.Year = categorical(tbl.Year,yearOrder);

Объедините tbl.Month и tbl.Year переменные в одну сгруппированную переменную xgroupdata. Создайте графики поля, показывающие распределение температур в течение каждого года месяца, соединившись. Заметьте тот tbl не содержит данные для соединений некоторого года месяца, таких как август 2016.

xgroupdata = tbl.Month.*tbl.Year;
boxchart(xgroupdata,tbl.TemperatureF)
ylabel('Temperature (F)')

В этом рисунке можно легко сравнить распределение температур в течение одного конкретного месяца через несколько лет. Например, вы видите в том феврале, что температуры варьировались намного больше по 2 016, чем в 2 015. Если вы предпочитаете хронологическое представление температур, можно установить xgroupdata к tbl.Year.*tbl.Month.

Создайте графики поля и постройте значения данных по графикам поля при помощи hold on.

Загрузите patients набор данных. Сгруппируйте пациентов в курильщиков и некурящих. Сравните диастолические значения кровяного давления для каждой группы пациентов при помощи графиков поля. Постройте отдельные диастолические значения кровяного давления по графикам поля.

load patients
boxchart(categorical(Smoker),Diastolic)
hold on
plot(categorical(Smoker),Diastolic,'x')
xlabel('Smoker')
ylabel('Diastolic Blood Pressure')
hold off

Используйте метки, чтобы определить, существенно отличаются ли средние значения друг от друга.

Загрузите patients набор данных. Разделите пациентов согласно их местоположению. Для каждой группы пациентов создайте график поля их весов. Задайте 'Notch','on' так, чтобы каждое поле включало клиновидную, теневую область, названную меткой. Графики поля с наложением меток не имеют существенно отличающихся медиан.

load patients
boxchart(categorical(Location),Weight,'Notch','on')
ylabel('Weight (lbs)')

В этом примере, трех перекрытиях меток, показывая, что три медианы веса не существенно отличаются.

Отобразитесь рядом друг с другом пара графиков поля с помощью tiledlayout и nexttile функции.

Загрузите patients набор данных. Преобразуйте Smoker к categorical переменная с более описательными названиями категории (Smoker и Nonsmoker вместо 1 и 0). Преобразуйте SelfAssessedHealthStatus к порядковому categorical переменная, потому что категории Poor, Fair, Good, и Excellent имейте естественный порядок.

load patients
Smoker = categorical(Smoker,logical([1 0]),{'Smoker','Nonsmoker'});
healthOrder = {'Poor','Fair','Good','Excellent'};
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus, ...
    healthOrder,'Ordinal',true);

Создайте 2 1 мозаичное размещение графика с помощью tiledlayout функция. Создайте первый набор осей ax1 в нем путем вызова nexttile функция. В осях отобразите два графика поля диастолических значений кровяного давления, один для курильщиков и другого для некурящих. Создайте второй набор осей ax2 в мозаичном размещении графика путем вызова nexttile функция. В осях отобразите четыре графика поля диастолических значений кровяного давления, группируя пациентов самооцененным состоянием здоровья. Задайте цвет полей при помощи 'BoxFaceColor' аргумент пары "имя-значение".

tiledlayout(1,2)

% Left axes
ax1 = nexttile;
boxchart(ax1,Smoker,Diastolic)
ylabel(ax1,'Diastolic Blood Pressure')

% Right axes
ax2 = nexttile;
boxchart(ax2,SelfAssessedHealthStatus,Diastolic, ...
    'BoxFaceColor',[0 0.5 0.5])
xlabel(ax2,'Self-Assessed Health Status')
ylabel(ax2,'Diastolic Blood Pressure')

Создайте график поля из данных об отключении электроэнергии со многими выбросами и облегчите отличать их визуально путем изменения свойств BoxChart объект. Найдите индексы для записей выброса.

Считайте данные об отключении электроэнергии в рабочую область как таблица. Отобразите первые несколько строк таблицы.

outages = readtable('outages.csv');
head(outages)
ans=8×6 table
       Region           OutageTime        Loss     Customers     RestorationTime            Cause       
    _____________    ________________    ______    __________    ________________    ___________________

    {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'   }
    {'SouthEast'}    2003-01-23 00:49    530.14    2.1204e+05                 NaT    {'winter storm'   }
    {'SouthEast'}    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'   }
    {'West'     }    2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    {'equipment fault'}
    {'MidWest'  }    2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'   }
    {'West'     }    2003-06-18 02:49         0             0    2003-06-18 10:54    {'attack'         }
    {'West'     }    2004-06-20 14:39    231.29           NaN    2004-06-20 19:16    {'equipment fault'}
    {'West'     }    2002-06-06 19:28    311.86           NaN    2002-06-07 00:51    {'equipment fault'}

Создайте BoxChart объект b от outages.Customers значения, которые указывают, сколько клиентов было затронуто каждым отключением электроэнергии. boxchart записи отбрасываний с NaN значения.

b = boxchart(outages.Customers);
ylabel('Number of Customers')

График содержит много выбросов. Чтобы лучше видеть их, дрожите выбросы и изменить стиль маркера выброса. Когда вы устанавливаете JitterOutliers свойство BoxChart возразите против 'on', программное обеспечение случайным образом перемещает маркеры выброса горизонтально так, чтобы они вряд ли перекрылись отлично. Значения и вертикальные положения выбросов неизменны.

b.JitterOutliers = 'on';
b.MarkerStyle = '.';

Можно теперь более легко видеть распределение выбросов.

Чтобы найти индексы выброса, используйте isoutlier функция. Задайте 'quartiles' метод вычислительных выбросов, чтобы совпадать с boxchart определение выброса. Используйте индексы, чтобы создать outliers таблица, которая содержит подмножество outages данные. Заметьте тот isoutlier идентифицирует 96 выбросов.

idx = isoutlier(outages.Customers,'quartiles');
outliers = outages(idx,:);
size(outliers,1)
ans = 96

Из-за всех выбросов квартили графика поля трудно видеть. Чтобы смотреть их, измените пределы оси Y.

ylim([0 4e5])

Входные параметры

свернуть все

Выборочные данные в виде числового вектора или матрицы.

  • Если ydata матрица, затем boxchart создает график поля для каждого столбца ydata.

  • Если ydata вектор, и вы не задаете xgroupdata, затем boxchart создает один график поля.

  • Если ydata вектор, и вы действительно задаете xgroupdata, затем boxchart создает график поля для каждого уникального значения в xgroupdata.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Группировка и расположение переменной в виде числового или категориального вектора. xgroupdata должен иметь ту же длину как векторный ydata; вы не можете задать xgroupdata когда ydata матрица.

boxchart группирует данные в ydata согласно уникальным значениям в xgroupdata. Функция создает график поля для каждой группы данных и положений каждый график поля в соответствующем xgroupdata значение. По умолчанию, boxchart вертикально ориентирует графики поля и отображает xgroupdata значения вдоль оси X. Можно изменить ориентацию графика поля при помощи Orientation свойство.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

Целевые оси в виде Axes объект. Если вы не задаете оси, то boxchart использует текущую систему координат (gca).

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: boxchart([rand(10,4); 4*rand(1,4)],'BoxFaceColor',[0 0.5 0],'MarkerColor',[0 0.5 0]) создает графики поля с зелеными полями и зелеными выбросами, если применимо.

BoxChart свойства, перечисленные здесь, являются только подмножеством. Для полного списка смотрите BoxChart Properties.

Цвет поля в виде триплета RGB, шестнадцатеричного цветового кода, названия цвета или краткого названия.

Для пользовательского цвета задайте триплет RGB или шестнадцатеричный цветовой код.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код является вектором символов или строковым скаляром, который запускается с символа хеша (#) сопровождаемый тремя или шестью шестнадцатеричными цифрами, которые могут лежать в диапазоне от 0 к F. Значения не являются чувствительными к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Кроме того, вы можете задать имена некоторых простых цветов. Эта таблица приводит опции именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Название цветаКраткое названиеТриплет RGBШестнадцатеричный цветовой кодВнешний вид
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'Не применяетсяНе применяетсяНе применяетсяНет цвета

Вот являются триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию использованием MATLAB® во многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешний вид
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Пример: b = boxchart(rand(10,1),'BoxFaceColor','red')

Пример: b.BoxFaceColor = [0 0.5 0.5];

Пример: b.BoxFaceColor = '#EDB120';

Стиль выброса в виде одной из опций перечислен в этой таблице.

ЗначениеОписание
'o'Круг
'+'Знак «плюс»
'*'Звездочка
'.'Точка
'x'Крест
'square' или 's'Квадрат
'diamond' или 'd'Ромб
'^'Треугольник, направленный вверх
'v'Нисходящий треугольник
'>'Треугольник, указывающий вправо
'<'Треугольник, указывающий влево
'pentagram' или 'p'Пятиконечная звезда (пентаграмма)
'hexagram' или 'h'Шестиконечная звезда (гексаграмма)
'none'Никакие маркеры

Пример: b = boxchart([rand(10,1);2],'MarkerStyle','x')

Пример: b.MarkerStyle = 'x';

Смещение маркера выброса в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

Если вы устанавливаете JitterOutliers свойство к 'on', затем boxchart случайным образом перемещает маркеры выброса вдоль XData направление, чтобы помочь вам различать выбросы, которые имеют подобный ydata значения. Для примера смотрите, Визуализируют и Находят Выбросы.

Пример: b = boxchart([rand(20,1);2;2;2],'JitterOutliers','on')

Пример: b.JitterOutliers = 'on';

Среднее отображение сравнения в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

Если вы устанавливаете Notch свойство к 'on', затем boxchart создает клиновидную, теневую область вокруг каждой медианы. Графики поля, метки которых не перекрываются, имеют различные медианы на 5%-м уровне значения. Для получения дополнительной информации см. График Поля (Диаграмма).

Метки могут расширить вне более низких и верхних квартилей.

Пример: b = boxchart(rand(10,2),'Notch','on')

Пример: b.Notch = 'on';

Ориентация поля строит диаграмму в виде 'vertical' или 'horizontal'. По умолчанию графики поля вертикально ориентируются, так, чтобы ydata статистические данные выравниваются с осью Y. Независимо от ориентации, boxchart хранит ydata значения в YData свойство BoxChart объект.

Пример: b = boxchart(rand(10,1),'Orientation','horizontal')

Пример: b.Orientation = 'horizontal';

Выходные аргументы

свернуть все

Графики поля, возвращенные как BoxChart объект. Для получения дополнительной информации смотрите BoxChart Properties.

Больше о

свернуть все

График поля (диаграмма)

График поля или диаграмма, обеспечивает визуальное представление итоговой статистики для выборки данных. Учитывая числовые данные, соответствующий график поля отображает следующую информацию: медиана, более низкие и верхние квартили, любые выбросы (вычисленное использование межквартильного размаха), и минимальные и максимальные значения, которые не являются выбросами.

  • Линия в каждом поле является демонстрационной медианой. Можно вычислить значение медианы с помощью median функция.

  • Верхние и нижние ребра каждого поля являются верхними и более низкими квартилями, соответственно. Расстояние между верхними и нижними ребрами является межквартильным размахом (IQR).

    Для получения дополнительной информации о том, как квартили вычисляются, видят quantile Алгоритмы (Statistics and Machine Learning Toolbox), где верхний квартиль соответствует 0,75 квантилям и более низкому квартилю, соответствуют 0,25 квантилям. Использовать quantile функция, у вас должна быть лицензия Statistics and Machine Learning Toolbox™.

  • Выбросы являются значениями, которые являются больше чем 1,5 · IQR далеко от верхней части или нижней части поля. По умолчанию, boxchart отображения каждый выброс с помощью 'o' символ. Расчет выброса сопоставим с тем из isoutlier функция с 'quartiles' метод.

  • Контактные усики являются линиями, которые расширяют выше и ниже каждого поля. Один контактный усик соединяет верхний квартиль с nonoutlier maximum (максимальное значение, которое не является выбросом), и другие подключения более низкий квартиль к nonoutlier minimum (минимальное значение, которое не является выбросом).

  • Метки помогают вам сравнить демонстрационные медианы через несколько графиков поля. Когда вы задаете 'Notch','on', boxchart функция создает клиновидную, теневую область вокруг каждой медианы. Графики поля, метки которых не перекрываются, имеют различные медианы на 5%-м уровне значения. Уровень значения основан на предположении нормального распределения, но среднее сравнение довольно устойчиво для других распределений.

    Верхние и нижние ребра области метки соответствуют m+(1.57IQR)/n и m(1.57IQR)/n, соответственно, где m является медианой, IQR является межквартильным размахом, и n является количеством точек данных, исключая NaN значения.

Example box charts, with labels for the summary statistics

Советы

  • Можно добавить два типа всплывающих подсказок к BoxChart объект: один для каждого поля строят диаграмму и один для каждого выброса. Общая всплывающая подсказка графика поля появляется в максимальном значении невыброса, независимо от того, где вы нажимаете на график поля. Отображенный Num Points значение включает NaN значения в соответствующем ydata, но boxchart отбрасывает NaN значения прежде, чем вычислить поле строят диаграмму статистики.

  • Можно использовать datatip функция, чтобы добавить больше всплывающих подсказок в BoxChart объект, но индексация всплывающих подсказок отличается от других графиков. boxchart первые индексы присвоений к графикам поля и затем присваивают индексы выбросам. Например, если BoxChart объект b отображения два графика поля и один выброс, datatip(b,'DataIndex',3) создает всплывающую подсказку в точке выброса.

Смотрите также

Функции

Свойства

Введенный в R2020a