这个例子展示了如何将一个文件导入到MATLAB®作为一个表格,从表格数据创建一个平行坐标图,并修改图的外观。
平行坐标图对于显示具有多列的表格或矩阵数据很有用。输入数据的行对应于绘图中的线,输入数据的列对应于绘图中的坐标。您可以对图中的线进行分组,以便更好地查看数据中的趋势。
加载示例文件TemperatureData.csv
,它包含了从2015年1月到2016年7月的平均日温度。将文件读入表中,并显示前几行。
台= readtable (“TemperatureData.csv”);头(台)
ans =8×4表Year Month Day TemperatureF ____ ___________ ___ ____________ 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 . 2015 {'January'} 8 8 . 2015 {'January'} 8 8 . 2015 {'January'} 8 8 . 2015 {'January'} 8 8 . 2015 {'January'} 8 8 . 2015 {'January'} 8 8 . 2015
从表的前几行创建一个平行坐标图。图中的每一行都对应于表中的一行。默认情况下,parallelplot
显示表中的所有坐标变量,顺序与它们在表中出现的顺序相同。该软件将坐标变量名显示在其相应的坐标标尺下方。
从图中可以看出,表格的前8行提供了2015年1月前8天的温度数据。例如,平均来说,第八天是八天中最冷的。
parallelplot(头(台)
为了帮助您解释绘图,MATLAB在默认情况下随机抖动绘图线,以便它们不太可能沿着坐标标尺完全重叠。例如,尽管前八个观察结果是一样的一年
和月
值时,情节线不与2015
在上面打勾一年
坐标尺或1月
在上面打勾月
协调的统治者。尽管抖动影响所有坐标变量,但它通常在分类坐标标尺上更明显,因为它依赖于标记之间的距离。你可以通过设置抖动
财产。
注意到一些标记一年
坐标尺是无意义的十进制值。要确保坐标标尺上的标记只对应有意义的值,可以使用分类
函数。
资源描述。一年= categorical(tbl.Year);
现在从整个表创建一个平行坐标图。分配ParallelCoordinatesPlot
对象转换为变量p
,并使用p
来修改创建后的图。例如,使用标题
财产。
p = parallelplot(台)
p = ParallelCoordinatesPlot with properties: SourceTable: [565x4 table] coordinatevvariables: {'Year' '' Month' 'Day' 'TemperatureF'} GroupVariable: "显示所有属性
p.Title =的温度数据;
把情节中的线按照一年
值,通过设置GroupVariable
财产。默认情况下,MATLAB将图例添加到绘图中。您可以通过设置LegendVisible
财产“关闭”
.
p.GroupVariable =“年”;
交互式地重新安排坐标变量,以便更容易地比较它们,并决定在情节中保留哪些变量。
在图形窗口中打开绘图。单击坐标标记并将关联的坐标标尺拖动到所选位置。软件在黑色矩形中勾勒出选定的坐标标尺。例如,您可以单击月
坐标标记并将坐标标尺拖动到右侧。你可以很容易地进行比较月
和TemperatureF
值。
当您交互地重新排列坐标变量时,软件会更新相关的变量CoordinateTickLabels
,CoordinateVariables
,CoordinateData
图的属性。
有关更多交互性选项,请参见提示.
中坐标变量的子集p.SourceTable
在情节中指定它们的顺序CoordinateVariables
的属性p
.
特别是,删除一天
变量,并显示TemperatureF
变量,它位于源表的第四列,作为绘图中的第二个坐标。
p. coordinatevvariables = [1 4 2];
或者,您可以设置CoordinateVariables
属性,方法是使用包含变量名的字符串或单元格数组或逻辑向量真正的
元素的选定变量。
中显示类别的子集月
并沿绘图中的坐标标尺改变类别顺序。
因为有些月份只有两年中的一年的数据,所以删除源表中与这些唯一月份相对应的行。当您更改源表时,MATLAB会立即更新图。
uniqueMonth = {“9”,“十月”,11月的,12月的,“八月”};uniqueMonthIdx = ismember (p.SourceTable.Month uniqueMonth);p.SourceTable (uniqueMonthIdx:) = [];
按时间顺序排列月份月
通过更新源表来协调标尺。
categoricalMonth =分类(p.SourceTable.Month);里newOrder = {“1月”,“2”,“3”,“4”,“可能”,“6月”,“7”};orderMonth = reordercats (categoricalMonth里newOrder);p.SourceTable.Month = orderMonth;
为了更好地可视化每个月的温度范围,使用离散化
并使用装箱值对图中的行进行分组。检查源表中的最低和最高温度。设置箱子边,使它们包含这些值。
分钟(p.SourceTable.TemperatureF)
ans = 3
马克斯(p.SourceTable.TemperatureF)
ans = 80
binEdges = [-3 10:10:80];垃圾箱= {00年代+ / -,十年代的,20年代的,30年代的,40年代的,50年代的,60年代的,70年代+};groupTemperature =离散化(p.SourceTable.TemperatureF,...binEdges,“分类”箱);
将binned温度添加到源表中。根据分类的温度数据,将图中的线分组。
p.SourceTable.GroupTemperature = groupTemperature;p.GroupVariable =“GroupTemperature”;
因为GroupTemperature
包括七个以上的类别,其中一些组在情节中有相同的颜色。为每一组指定不同的颜色颜色
财产。
p.Color =喷气(8);