使用平行坐标图探索表数据
本示例演示如何将文件作为表导入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
值。
当您以交互方式重新排列坐标变量时,软件将更新相关的坐标变量CoordinateTickLabels
,CoordinateVariables
,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);