Plot 在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

基于此网站 我想从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    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.
对于这个示例数据,它们都会生成非常难看的图表,并且显然不需要给出极坐标。为了让每个人都有自己的图表,上面显示的小倍数不会直接起作用,但是
分割文件
方法会起作用


对于添加所有观察平均值的最新请求,这里有一个潜在的工作流程:

  • 使用
    AGGREGATE
    为所有变量的平均值再添加6列,例如
    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
    行,并制作第二行
    元素
    显示平均值

天哪,SPSS的“语法”太难看了——每次我看到它,我都想呕吐。不幸的是,我每天都和你一起工作SPSS@ChristianSauer
GGRAPH
的语法是可怕的是。与在
R
中必须使用的所有
*pply
函数相比,数据管理(例如
VARSTOCASES
AGGREGATE
)非常简洁
GGRAPH
我通常让GUI为我构建基本规范集,然后我添加格式。我认为它们还可以——与dplyr相比,我每次都使用dplyr。但这并不多——与一种好的编程语言相比,这两种语言都非常可怕。特别是因为两者的语法都不一致,谢谢@AndyW。但是,我想在单独的坐标中创建单独的蜘蛛图。现在,所有案例(id 1-5)都是在一张图表中绘制的。但是我想创建5个图表,每个都包含一个id的蜘蛛图和每个id的平均值。我尝试了循环,但是我得到了关于GPL的错误。你看@malptek-一个将这些拆分为单独图表的示例。不过,请注意,这些示例(以及大多数数据)与笛卡尔坐标系下的条形图一样清晰。