Plot 在spss中为每个案例创建绘图
基于此网站 我想从6个变量在SPSS中创建一个蜘蛛图。但是,我想从数据集中为每一行或每一个案例创建它 例如:Plot 在spss中为每个案例创建绘图,plot,spss,Plot,Spss,基于此网站 我想从6个变量在SPSS中创建一个蜘蛛图。但是,我想从数据集中为每一行或每一个案例创建它 例如: id var1 var2 var3 var4 var5 var6 1 4 4 3 4 2 1 2 3 4 2 4 4 4 3 4 1 3 1 4 4 4 1 1 2 4 1 4 5
id var1 var2 var3 var4 var5 var6
1 4 4 3 4 2 1
2 3 4 2 4 4 4
3 4 1 3 1 4 4
4 1 1 2 4 1 4
5 4 3 4 1 2 2
输出应该是5个名为id的蜘蛛图
非常感谢您的帮助:)最简单的方法是不必费心处理平行坐标,只需重新调整数据的形状,使
Var1到Var6
位于同一列中
DATA LIST FREE / ID Var1 TO Var6.
BEGIN DATA
1 4 4 3 4 2 1
2 3 4 2 4 4 4
3 4 1 3 1 4 4
4 1 1 2 4 1 4
5 4 3 4 1 2 2
END DATA.
*Reshape and make graph - much easier.
VARSTOCASES /MAKE Var FROM Var1 TO Var6 /INDEX VarID (Var).
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=VarID Var ID
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: VarID=col(source(s), name("VarID"), unit.category())
DATA: ID=col(source(s), name("ID"), unit.category())
DATA: Var=col(source(s), name("Var"))
COORD: polar(dim(1,2))
GUIDE: axis(dim(1), label("VarID"))
GUIDE: axis(dim(2), label("Var"))
ELEMENT: line(position(VarID*Var), split(ID), color(ID), closed(),
preserveStraightLines())
END GPL.
要制作这些单独的图形(因此每个ID都有自己的绘图,并且它们不会全部叠加在同一个图形上),您可以使用小倍数:
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=VarID Var ID
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: VarID=col(source(s), name("VarID"), unit.category())
DATA: ID=col(source(s), name("ID"), unit.category())
DATA: Var=col(source(s), name("Var"))
COORD: polar(dim(1,2), wrap())
GUIDE: axis(dim(1), label("VarID"))
GUIDE: axis(dim(2), label("Var"))
ELEMENT: line(position(VarID*Var*ID), closed(), preserveStraightLines())
END GPL.
或者您可以使用分割文件
:
SPLIT FILE BY ID.
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=VarID Var ID
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: VarID=col(source(s), name("VarID"), unit.category())
DATA: ID=col(source(s), name("ID"), unit.category())
DATA: Var=col(source(s), name("Var"))
COORD: polar(dim(1,2))
GUIDE: axis(dim(1), label("VarID"))
GUIDE: axis(dim(2), label("Var"))
ELEMENT: line(position(VarID*Var), closed(), preserveStraightLines())
END GPL.
SPLIT FILE OFF.
对于原始数据,您可以使用平行坐标,这与您列出的给定技术说明基本相同,但格式化所有轴要麻烦得多。下面的例子
DATA LIST FREE / ID Var1 TO Var6.
BEGIN DATA
1 4 4 3 4 2 1
2 3 4 2 4 4 4
3 4 1 3 1 4 4
4 1 1 2 4 1 4
5 4 3 4 1 2 2
END DATA.
DATASET NAME Temp.
EXECUTE.
*Using parrallel coordinate plot.
FORMATS ID Var1 TO Var6 (F1.0).
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=ID Var1 Var2 Var3 Var4 Var5 Var6
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: ID=col(source(s), name("ID"), unit.category())
DATA: Var1=col(source(s), name("Var1"))
DATA: Var2=col(source(s), name("Var2"))
DATA: Var3=col(source(s), name("Var3"))
DATA: Var4=col(source(s), name("Var4"))
DATA: Var5=col(source(s), name("Var5"))
DATA: Var6=col(source(s), name("Var6"))
COORD: polar(parallel())
GUIDE: axis(dim(1), label("Var1"), delta(1), start(1))
GUIDE: axis(dim(2), label("Var2"), delta(1), start(1))
GUIDE: axis(dim(3), label("Var3"), delta(1), start(1))
GUIDE: axis(dim(4), label("Var4"), delta(1), start(1))
GUIDE: axis(dim(5), label("Var5"), delta(1), start(1))
GUIDE: axis(dim(6), label("Var6"), delta(1), start(1))
SCALE: linear(dim(1), min(0), max(4.2))
SCALE: linear(dim(2), min(0), max(4.2))
SCALE: linear(dim(3), min(0), max(4.2))
SCALE: linear(dim(4), min(0), max(4.2))
SCALE: linear(dim(5), min(0), max(4.2))
SCALE: linear(dim(6), min(0), max(4.2))
ELEMENT: line(position(Var1*Var2*Var3*Var4*Var5*Var6), split(ID), closed(),
preserveStraightLines())
END GPL.
对于这个示例数据,它们都会生成非常难看的图表,并且显然不需要给出极坐标。为了让每个人都有自己的图表,上面显示的小倍数不会直接起作用,但是分割文件
方法会起作用
对于添加所有观察平均值的最新请求,这里有一个潜在的工作流程:
- 使用
为所有变量的平均值再添加6列,例如AGGREGATE
AGGREGATE OUTFILE=*MODE=ADDVARIABLES/BREAK/VM1到VM6=mean(V1到V6)。
- 重塑时,生成两个新变量,例如
VARSTOCASES/make Var FROM Var1 TO Var6/make Var2 FROM VM1 TO VM6/INDEX VarID
- 在GGRAPH代码中,将
添加到Var2
命令中VARIABLES
- 对于内联GPL代码,为
添加Var2
行,并制作第二行DATA
显示平均值元素
GGRAPH
的语法是可怕的是。与在R
中必须使用的所有*pply
函数相比,数据管理(例如VARSTOCASES
,AGGREGATE
)非常简洁GGRAPH
我通常让GUI为我构建基本规范集,然后我添加格式。我认为它们还可以——与dplyr相比,我每次都使用dplyr。但这并不多——与一种好的编程语言相比,这两种语言都非常可怕。特别是因为两者的语法都不一致,谢谢@AndyW。但是,我想在单独的坐标中创建单独的蜘蛛图。现在,所有案例(id 1-5)都是在一张图表中绘制的。但是我想创建5个图表,每个都包含一个id的蜘蛛图和每个id的平均值。我尝试了循环,但是我得到了关于GPL的错误。你看@malptek-一个将这些拆分为单独图表的示例。不过,请注意,这些示例(以及大多数数据)与笛卡尔坐标系下的条形图一样清晰。