主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

支持表的绘图

许多绘图函数可以直接从表中绘制数据。您将表作为第一个参量传递给函数,后跟要绘制的变量。您可以指定表或时间表,并且在许多情况下,您可以在同一坐标区中一起绘制多个数据集。

以下示例使用 plotscatter 函数来演示从表中绘制数据的整体方法。要了解特定绘图函数是否支持表,请参阅该函数的文档。

创建简单的线图

创建包含三个变量的表。然后将表作为第一个参量传递给 plot 函数,后跟要绘制的变量的名称。在本例中,在 x 轴上绘制 Input 变量,在 y 轴上绘制 Output1 变量。请注意,轴标签与变量名称匹配。

% Create a table
Input = linspace(0,12)';
Output1 = sin(Input);
Output2 = sin(Input/3);
tbl = table(Input,Output1,Output2);

% Plot the table variables
plot(tbl,"Input","Output1")

Figure contains an axes object. The axes object with xlabel Input, ylabel Output1 contains an object of type line.

要一起绘制多个数据集,请为 x 坐标、y 坐标或两者指定表变量名称的字符串向量。例如,将 Output1Output2 变量一起绘制在 y 轴上。

由于 y 坐标来自两个不同表变量,不清楚 y 轴标签应该是什么,因此轴标签保持空白。但是,如果您添加图例,则图例条目与对应的变量名称匹配。

plot(tbl,"Input",["Output1","Output2"])
legend

Figure contains an axes object. The axes object with xlabel Input contains 2 objects of type line.

自定义线图

要自定义使用表绘图后的线条外观,请设置 LineStyleColor 属性。例如,将 weather.csv 作为时间表读取,并绘制 Temperature 变量对行时间的图。将 Line 对象返回为 p,以便以后可以设置其属性。

注意:以下代码省略 x 坐标的变量。当您省略 x 坐标时,将绘制 y 坐标对行索引(对于表)或行时间(对于时间表)的图。

tbl = readtimetable("weather.csv");
p = plot(tbl,"Temperature");

将线型更改为虚线,并将颜色更改为紫色。

p.LineStyle = "--";
p.Color = [0.5 0 1];

Figure contains an axes object. The axes object with xlabel Time, ylabel Temperature contains an object of type line.

自定义散点图

您可以通过在使用表绘图后设置属性来自定义散点图中标记的外观。例如,将 patients.xls 作为表读取,并使用填充标记绘制 Diastolic 变量对 Systolic 变量的图。将 Scatter 对象返回为 s,以便以后可以设置其属性。

tbl = readtable("patients.xls");
s = scatter(tbl,"Systolic","Diastolic","filled");

将标记符号更改为正方形,用浅蓝色填充标记,并将标记大小更改为 80

s.Marker = "sq";
s.MarkerFaceColor = [0.5 0.7 1];
s.SizeData = 80;

Figure contains an axes object. The axes object with xlabel Systolic, ylabel Diastolic contains an object of type scatter.

您还可以根据表变量改变标记的颜色和透明度。例如,通过将 MarkerFaceColor 属性设置为 "flat",然后将 ColorVariable 属性设置为 "Age",以根据 Age 变量改变颜色。

通过将 MarkerFaceAlpha 属性设置为 "flat",然后将 AlphaVariable 属性设置为 "Weight",以根据 Weight 变量改变透明度。

% Vary the colors
s.MarkerFaceColor = "flat";
s.ColorVariable = "Age";

% Vary the transparency
s.MarkerFaceAlpha = "flat";
s.AlphaVariable = "Weight";

Figure contains an axes object. The axes object with xlabel Systolic, ylabel Diastolic contains an object of type scatter.

通过修改表更新绘图

当您将一个表传递给绘图函数时,该表的副本会存储在绘图对象的 SourceTable 属性中。如果您更改该属性中存储的表的内容,绘图将自动更新以显示更改。(但是,如果您对工作区中的表进行更改,这些更改不会影响您的绘图。)

例如,将 patients.xls 作为表读取,并绘制 Weight 变量对 Height 变量的图。将 Scatter 对象返回为 s,以便稍后访问其属性。

tbl = readtable("patients.xls");
s = scatter(tbl,"Height","Weight","filled");

Figure contains an axes object. The axes object with xlabel Height, ylabel Weight contains an object of type scatter.

要更改表中的值,请使用圆点表示法从 Scatter 对象的 SourceTable 属性引用该表。在本例中,查找 Weight 变量的最大值并将其更改为 300。绘图将自动更新。

[~,idx] = max(s.SourceTable.Weight);
s.SourceTable.Weight(idx) = 300;

Figure contains an axes object. The axes object with xlabel Height, ylabel Weight contains an object of type scatter.

结合表和向量数据

许多支持表的绘图允许您使用表变量指定绘图的某些方面,并使用向量或矩阵指定其他方面。例如,您可以使用表中的坐标创建一个散点图,并通过将 CData 属性设置为向量、RGB 三元组或 RGB 三元组矩阵来自定义标记的颜色。

例如,使用表中的数据创建一个散点图。将 patients.xls 作为表读取,并绘制 Weight 变量对 Height 变量的图。

tbl = readtable("patients.xls");
s = scatter(tbl,"Height","Weight","filled");

Figure contains an axes object. The axes object with xlabel Height, ylabel Weight contains an object of type scatter.

接下来,使用向量更改绘制的点的颜色。当您像这样组合来自不同数据源的数据时,每个向量、矩阵或表变量的大小必须与您创建的绘图兼容。在本例中,通过将表中的收缩压值除以舒张压值来创建一个名为 bpratio 的向量。由于 bpratioHeightWeight 变量派生自同一个表,因此它与这些变量具有相同数量的元素,从而与此绘图兼容。

通过将 CData 属性设置为 bpratio,根据血压比率为每个点着色。然后添加颜色栏。

% Vary the color by blood pressure ratio
bpratio = tbl.Systolic./tbl.Diastolic;
s.CData = bpratio;

% Add a colorbar
colorbar

Figure contains an axes object. The axes object with xlabel Height, ylabel Weight contains an object of type scatter.

您还可以绘制向量或矩阵,并使用表变量修改绘图。在创建绘图后,设置 SourceTable 属性,然后设置所需的表相关的属性。表相关的属性通常在其名称中包含 Variable 字样。例如,绘制两个包含 100 个随机数的向量。

x = rand(100,1);
y = rand(100,1);
s = scatter(x,y,"filled");

Figure contains an axes object. The axes object contains an object of type scatter.

更改标记颜色,使其根据表变量中的值而变化。将 patients.xls 作为表 tbl 读取。设置 SourceTable 属性,并根据表中的 Age 变量改变标记颜色。由于表有 100 个行,绘图有 100 个点,因此 Age 变量与绘图兼容。然后,向绘图添加颜色栏。

% Set source table and vary color by age
s.SourceTable = tbl;
s.ColorVariable = "Age";

% Add a colorbar
colorbar

Figure contains an axes object. The axes object contains an object of type scatter.

注意:独立可视化(如 heatmap)不支持表和向量数据的组合。

另请参阅

函数

属性

主题