Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

stackedplot

具有公共 x 轴的几个变量的堆叠图

说明

示例

stackedplot(tbl) 在堆叠图中绘制表或时间表的变量。该函数在垂直层叠的单独 y 轴中绘制变量。这些变量共享一个公共 x 轴。

  • 如果 tbl 是表,则该函数绘制变量对行号的图。

  • 如果 tbl 是时间表,则该函数绘制变量对行时间的图。

stackedplot 函数绘制 tbl 的所有数值、逻辑、分类、日期时间和持续时间变量,并忽略具有任何其他数据类型的表变量。

示例

stackedplot(tbl,vars) 仅绘制 vars 指定的表或时间表变量。

stackedplot(___,'XVariable',xvar) 指定为堆叠图提供 x 值的表变量。此语法仅支持表,而不支持时间表。

示例

stackedplot(X,Y) 绘制 Y 列对向量 X 的图。

stackedplot(Y) 绘制 Y 的列对其行号的图。x 轴的刻度范围是从 1 到 Y 的行数。

stackedplot(___,LineSpec) 设置线型、标记符号和颜色。您可以将此语法与前面任何语法中的输入参数结合使用。

示例

stackedplot(___,Name,Value) 使用一个或多个 Name,Value 对组参数设置堆叠图的属性。有关属性列表,请参阅 StackedLineChart 属性。可以将此选项与前面语法中的任何输入参数组合一起使用。名称-值对组设置应用于堆叠图中的所有绘图。将每个属性名称括在引号中。

stackedplot(parent,___)parent 指定的图窗、面板或选项卡中创建堆叠图。选项 parent 可以位于前面的语法中的任何输入参数组合之前。

示例

s = stackedplot(___) 返回 StackedLineChart 对象。创建堆叠图后,可以使用 s 更改堆叠图的属性。有关属性列表,请参阅 StackedLineChart 属性

示例

全部折叠

将电子表格中的数据读取到一个表中。然后将该表转换为时间表。包含日期和时间的第一个变量 OutageTime 提供时间表的行时间。显示前五行。

tbl = readtable('outages.csv');
tbl = table2timetable(tbl);
head(tbl,5)
ans=5×5 timetable
       OutageTime          Region         Loss     Customers     RestorationTime            Cause       
    ________________    _____________    ______    __________    ________________    ___________________

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

对时间表进行排序,使其行时间按顺序排列。时间表的行时间不需要按顺序排列。但是,如果将行时间用作绘图的 x 轴,则最好确保时间表按行时间排序。

tbl = sortrows(tbl);
head(tbl,5)
ans=5×5 timetable
       OutageTime          Region         Loss     Customers     RestorationTime          Cause      
    ________________    _____________    ______    __________    ________________    ________________

    2002-02-01 12:18    {'SouthWest'}    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'}
    2002-03-05 17:53    {'MidWest'  }    96.563    2.8666e+05    2002-03-10 14:41    {'wind'        }
    2002-03-16 06:18    {'MidWest'  }    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'}
    2002-03-26 01:59    {'MidWest'  }    388.04    5.6422e+05    2002-03-28 19:55    {'winter storm'}
    2002-04-20 16:46    {'MidWest'  }     23141           NaN                 NaT    {'unknown'     }

基于 tbl 创建数据的一个堆叠图。行时间 OutageTime 提供沿 x 轴的值。stackedplot 函数绘制来自 LossCustomersRestorationTime 变量的值,其中每个变量沿它自己的 y 轴绘制。但是,该绘图不包含 RegionCause 变量,因为它们包含不能绘制的数据。

stackedplot(tbl)

根据患者数据创建一个表。显示前三行。

tbl = readtable('patients.xls');
head(tbl,3)
ans=3×10 table
      LastName        Gender      Age              Location               Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    ____________    __________    ___    _____________________________    ______    ______    ______    ________    _________    ________________________

    {'Smith'   }    {'Male'  }    38     {'County General Hospital'  }      71       176      true        124          93             {'Excellent'}      
    {'Johnson' }    {'Male'  }    43     {'VA Hospital'              }      69       163      false       109          77             {'Fair'     }      
    {'Williams'}    {'Female'}    38     {'St. Mary's Medical Center'}      64       131      false       125          83             {'Good'     }      

仅绘制表中的四个变量。

stackedplot(tbl,{'Height','Weight','Systolic','Diastolic'})

创建一个时间表并显示其前三行。

tbl = readtable('outages.csv');
tbl = table2timetable(tbl);
tbl = sortrows(tbl);
head(tbl,3)
ans=3×5 timetable
       OutageTime          Region         Loss     Customers     RestorationTime          Cause      
    ________________    _____________    ______    __________    ________________    ________________

    2002-02-01 12:18    {'SouthWest'}    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'}
    2002-03-05 17:53    {'MidWest'  }    96.563    2.8666e+05    2002-03-10 14:41    {'wind'        }
    2002-03-16 06:18    {'MidWest'  }    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'}

通过以与表中的顺序不同的顺序指定变量,对变量重新排序。例如,RestorationTime 是时间表中可以绘制的最后一个变量。默认情况下,stackedplot 将其放置在绘图的底部。但是,您可以对变量重新排序以将 RestorationTime 放在顶部。

stackedplot(tbl,{'RestorationTime','Loss','Customers'})

还有其他方法可以对变量进行重新排序。

  • 按在表中的数字顺序指定它们:stackedplot(tbl,[4 2 3]);

  • 返回一个 StackedLineChart 对象,并对其 DisplayVariables 属性中的值重新排序:s = stackedplot(tbl); s.DisplayVariables = {'RestorationTime','Loss','Customers'}

使用 WeightSystolicDiastolic 变量基于患者数据的子集创建一个表。

load patients
tbl = table(Weight,Systolic,Diastolic);
head(tbl,3)
ans=3×3 table
    Weight    Systolic    Diastolic
    ______    ________    _________

     176        124          93    
     163        109          77    
     131        125          83    

创建一个堆叠图,使用相同的 y 轴绘制 SystolicDiastolic。要将这些变量一起绘制,请在嵌套元胞数组中指定它们。

vars = {{'Systolic','Diastolic'},'Weight'}
vars=1×2 cell array
    {1x2 cell}    {'Weight'}

stackedplot(tbl,vars)

创建一个数值矩阵和一个数值向量。

X = [0:4:20]
X = 1×6

     0     4     8    12    16    20

Y = randi(100,6,3)
Y = 6×3

    82    28    96
    91    55    49
    13    96    81
    92    97    15
    64    16    43
    10    98    92

使用 XY 创建一个堆叠图。

stackedplot(X,Y)

加载具有一组天气测量值的时间表。显示其前三行。

load outdoors
outdoors(1:3,:)
ans=3×3 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:24        49          51.3          29.61   
    2015-11-15 01:30:24      48.9          51.5          29.61   
    2015-11-15 03:00:24      48.9          51.5          29.61   

创建一个堆叠图。使用名称-值对组参数指定 y 轴的标题和标签。您可以使用名称-值对组来更改任何属性的默认值。(另请注意,您可以使用 char(176) 指定度符号。)

degreeSymbol = char(176);
newYlabels = {'RH (%)',['T (' degreeSymbol 'F)'],'P (in Hg)'};
stackedplot(outdoors,'Title','Weather Data','DisplayLabels',newYlabels)

stackedplot 函数返回 StackedLineChart 对象。您可以使用它为所有绘图设置相同的属性值,或为单个绘图设置不同属性值。在此示例中,首先更改堆叠图中所有绘图的线宽。然后,使用单个绘图的 PlotType 属性,以便堆叠图具有线图、散点图和阶梯图。

加载具有一组天气测量值的时间表。

load outdoors
outdoors(1:3,:)
ans=3×3 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:24        49          51.3          29.61   
    2015-11-15 01:30:24      48.9          51.5          29.61   
    2015-11-15 03:00:24      48.9          51.5          29.61   

创建一个堆叠图并返回 StackedLineChart 对象。

s = stackedplot(outdoors)

s = 
  StackedLineChart with properties:

         SourceTable: [51x3 timetable]
    DisplayVariables: {'Humidity'  'TemperatureF'  'PressureHg'}
               Color: [0 0.4470 0.7410]
           LineStyle: '-'
           LineWidth: 0.5000
              Marker: 'none'
          MarkerSize: 6

  Show all properties

该对象提供对应用于所有绘图的许多属性的访问权限。例如,您可以使用 s.LineWidth 使线条更宽。

s.LineWidth = 2;

该对象还提供对某些对象数组的访问权限,这些对象数组可用于修改单个绘图的线条和 y 轴。要访问单个线条的属性,请使用 s.LineProperties。对于每个绘图,您可以指定不同线型、标记、绘图类型等。

s.LineProperties
ans=3×1 object
  3x1 StackedLineProperties array with properties:

    Color
    MarkerFaceColor
    MarkerEdgeColor
    LineStyle
    LineWidth
    Marker
    MarkerSize
    PlotType

使用 PlotType 属性将第二个绘图更改为散点图,将第三个绘图更改为阶梯图。

s.LineProperties(2).PlotType = 'scatter';
s.LineProperties(3).PlotType = 'stairs';

您还可以通过 s.AxesProperties 属性访问单个 y 轴。

s.AxesProperties
ans=3×1 object
  3x1 StackedAxesProperties array with properties:

    YLimits
    LegendLabels
    LegendLocation
    LegendVisible

输入参数

全部折叠

输入表或时间表。

输入表中的变量,指定为字符向量元胞数组、字符串数组、数值数组或逻辑数组。

如果 vars 是元胞数组,它也可以是嵌套的元胞数组。stackedplot 函数在同一 y 轴中绘制嵌套元胞中指定的所有变量。

包含 x 值的表变量,指定为字符向量、字符串标量、整数或逻辑数组。

仅当输入参数 tbl 是表而不是时间表时,才能指定 xvar

x 值,指定为数值、日期时间、持续时间或逻辑向量。X 的长度必须等于 Y 的行数。

y 值,指定为数值、日期时间、持续时间、分类或逻辑数组。stackedplot 函数在单独的 y 轴中绘制每列。

线型、标记和颜色,指定为包含符号的字符向量或字符串标量。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。

示例: '--or' 是带有圆形标记的红色虚线

线型说明
-实线(默认)
--虚线
:点线
-.点划线
标记说明
o圆圈
+加号
*星号
.
x叉号
s方形
d菱形
^上三角
v下三角
>右三角
<左三角
p五角形
h六角形
颜色说明

y

黄色

m

品红色

c

青蓝色

r

红色

g

绿色

b

蓝色

w

白色

k

黑色

父容器,指定为 FigurePanelTabTiledChartLayout 对象。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'Marker','o','MarkerSize',10

此处列出的堆叠图线条属性仅是适用于所有堆叠图的一个公共子集,无论数据源是表还是数组。有关完整列表,请参阅 StackedLineChart 属性

线条颜色,指定为 RGB 三元组、十六进制颜色代码或第一个表中列出的颜色选项之一。

对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 '#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'不适用不适用不适用无颜色

以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

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'

示例: 'blue'

示例: [0 0 1]

示例: '#0000FF'

线型,指定为下表中列出的选项之一。

线型说明表示的线条
'-'实线

'--'虚线

':'点线

'-.'点划线

'none'无线条无线条

线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。

线宽不能小于像素的宽度。如果将线宽设置为小于系统上像素宽度的值,则线条显示为一个像素的宽度。

标记符号,指定为下表中的标记之一。默认情况下,堆叠图线条没有标记。通过指定标记符号沿该线条上的每个数据点添加标记。

说明
'o'圆圈
'+'加号
'*'星号
'.'
'x'叉号
'square''s'方形
'diamond''d'菱形
'^'上三角
'v'下三角
'>'右三角
'<'左三角
'pentagram''p'五角星(五角形)
'hexagram''h'六角星(六角形)
'none'无标记

示例: 'Marker','+'

示例: 'Marker','diamond'

标记大小,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。

提示

  • 要以交互方式浏览堆叠图中的数据,请使用下列功能。

    • 缩放 - 使用滚轮进行缩放。

    • 平移 - 点击并拖动堆叠图以跨 x 值平移。

    • 数据游标 - 将鼠标悬停在某个位置上,以显示每个绘图的 y 值。

在 R2018b 中推出