文档

使用平行坐标图探索表数据

本示例演示如何将文件作为表导入MATLAB®,从表格数据创建并行坐标图,并修改图的外观。

平行坐标图对于具有多列的表格或矩阵数据的可视化非常有用。输入数据的行对应于图中的行,输入数据的列对应于图中的坐标。您可以对图中的线条进行分组,以便更好地查看数据的趋势。

导入文件为表

加载示例文件TemperatureData.csv,其中包含2015年1月至2016年7月的平均日气温。将文件读入一个表,并显示前几行。

TBL = readtable(fullfile(matlabroot,“例子”“图形”“TemperatureData.csv”));头(台)
ans =8×4表年月日温度____ ___________ ___ ____________ 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显示表中所有坐标变量,其顺序与它们在表中出现的顺序相同。该软件在对应的坐标标尺下面显示坐标变量名。

该图显示表的前八行提供了2015年1月前八天的温度数据。例如,平均而言,第八天是八天中最冷的一天。

parallelplot(头(台)

ans = ParallelCoordinatesPlot with properties: SourceTable: [8x4 table] coordinatvariables:{'年''月''日'' TemperatureF'} GroupVariable: "显示所有属性

为了帮助您解释绘图,MATLAB默认情况下随机抖动绘图线,使它们不太可能沿着坐标标尺完美重叠。例如,尽管前八个观察结果相同一年而且价值观、情节线都与之不齐2015沿着一年坐标尺或1月沿着协调的统治者。尽管抖动影响所有坐标变量,但它通常更明显地沿着分类坐标标尺,因为它取决于标记之间的距离。属性可以控制画面中的抖动量抖动财产。

注意,一些标记沿着一年坐标标尺是无意义的十进制值。方法将变量转换为类别变量,以确保坐标标尺上的标记仅对应有意义的值分类函数。

资源描述。一年= categorical(tbl.Year);

现在从整个表创建一个平行坐标图。分配ParallelCoordinatesPlot对象赋给变量。p,并使用p来修改你创建的情节。方法向图形中添加标题标题财产。

P =并行图(tbl)
p = ParallelCoordinatesPlot with properties: SourceTable: [565x4 table] coordinatvariables:{'年''月''日'' TemperatureF'} GroupVariable: "显示所有属性
p.Title =的温度数据

群体情节线

将情节中的线条根据一年值,通过设置GroupVariable财产。默认情况下,MATLAB会向图中添加一个图例。属性可以删除图例LegendVisible财产“关闭”

p.GroupVariable =“年”

交互式地重新排列坐标变量

以交互方式重新排列坐标变量,以便更容易地进行比较,并决定在图中保留哪些变量。

在图形窗口中打开plot。单击坐标标记标签,并将相关的坐标标尺拖动到所选位置。该软件在一个黑色矩形中勾勒出所选的坐标标尺。例如,您可以单击坐标标记标签,并将坐标标尺向右拖动。你可以很容易地进行比较而且TemperatureF值。

当您以交互方式重新排列坐标变量时,软件将更新相关的坐标变量CoordinateTickLabelsCoordinateVariables,CoordinateData地块的属性。

有关更多交互选项,请参见提示

选择坐标变量子集

中显示坐标变量的子集p.SourceTable并指定它们在图中的顺序通过设置CoordinateVariables的属性p

特别是,删除一天变量的绘图,并显示TemperatureF变量,它位于源表的第四列,作为图中的第二个坐标。

p. coordinatvariables = [1 4 2];

或者,您可以设置CoordinateVariables属性,使用变量名的字符串或单元格数组或逻辑向量真正的元素。

修改坐标变量中的类别

中显示类别的子集并沿着图中的坐标标尺改变类别顺序。

因为有些月份只有两年中的一年的数据,所以要删除源表中与这些唯一月份对应的行。只要您更改源表,MATLAB就会立即更新绘图。

uniqueMonth = {“9”“十月”11月的12月的“八月”};uniqueMonthIdx = ismember(p.SourceTable.Month, uniqueMonthIdx);p.SourceTable(uniqueMonthIdx,:) = [];

按照时间顺序排列月份通过更新源表来坐标标尺。

categoricalMonth = categorical(p.SourceTable.Month);newOrder = {“1月”“2”“3”“4”“可能”“6月”“7”};orderMonth = reordercats(categoricalMonth,newOrder);p.SourceTable.Month = orderMonth;

使用分类值分组绘图线

为了更好地显示每个月的温度范围,可以使用离散化并使用分箱值对图中的线条进行分组。检查源表中的最低和最高温度。设置bin边,使它们包含这些值。

分钟(p.SourceTable.TemperatureF)
Ans = -3
马克斯(p.SourceTable.TemperatureF)
Ans = 80
binEdges = [-3 10:10:80];bin = {00年代+ / -十年代的20年代的30年代的40年代的50年代的60年代的70年代+};groupTemperature =离散化(p.SourceTable.TemperatureF,binEdges,“分类”箱);

将打包的温度添加到源表中。根据分箱温度数据对图中的线条进行分组。

p.SourceTable.GroupTemperature = groupTemperature;p.GroupVariable =“GroupTemperature”

因为GroupTemperature包括7个以上的类别,其中一些组在图中有相同的颜色。属性为每个组分配不同的颜色颜色财产。

p.Color = jet(8);

另请参阅

功能

属性