是否可以使用TraMineR和R基图生成具有填充图案的图形?

是否可以使用TraMineR和R基图生成具有填充图案的图形?,r,traminer,R,Traminer,在此输入图像描述序列分析或具有多种分类状态的图的发布中的一个常见问题是它们不容易转移到黑白纸质出版物中。有一些工具,例如,可以帮助做出关于灰度颜色的明智决定。尽管如此,如果调色板超过5个或更多灰度,结果仍不令人满意。因此,在这些情况下,将填充图案添加到某些图形区域将非常有用(尽管著名的Edward Tufte不建议这样做) 是否可以使用R基本图形的填充功能或基本图形的扩展来向TraMineR图形添加填充图案 以下是序列索引图的小示例: library(TraMineR) library(RCo

在此输入图像描述序列分析或具有多种分类状态的图的发布中的一个常见问题是它们不容易转移到黑白纸质出版物中。有一些工具,例如,可以帮助做出关于灰度颜色的明智决定。尽管如此,如果调色板超过5个或更多灰度,结果仍不令人满意。因此,在这些情况下,将填充图案添加到某些图形区域将非常有用(尽管著名的Edward Tufte不建议这样做)

是否可以使用R基本图形的填充功能或基本图形的扩展来向
TraMineR
图形添加填充图案

以下是序列索引图的小示例:

library(TraMineR)

library(RColorBrewer)

## Load example dataset with 8 sequence states 
data(biofam)

## Define sequence objects 
biofam.lab <- c("Parent", "Left", "Married", "Left+Marr",
                "Child", "Left+Child", "Left+Marr+Child", "Divorced")
biofam.seq <- seqdef(biofam, 10:25, labels=biofam.lab)

## Example plot in colors
seqiplot(biofam.seq, cex.legend=.7)

## Example plot in greys for b/w publication
seqiplot(biofam.seq, cex.legend=.7, cpal=brewer.pal(8, "Greys"))
库(TraMineR)
图书馆(RColorBrewer)
##加载具有8个序列状态的示例数据集
数据(上午)
##定义序列对象

biofam.lab在评论之后,我提出了这个“解决方案”,其图形仍然可以改进。不幸的是,我无法覆盖的传奇以及,所以他们仍然需要一些工作。如果有人有主意,我会很高兴的

## Define smaller black/grey palette, delete almost white tones
greys <- c("black", "black", "black", "black", brewer.pal(5, "Greys")[2:5])

## Example plot using density and overwriting angle options
par(mar=c(1,2,1,1))
layout(matrix(c(1,2), 2, 1, byrow = TRUE), heights=c(2,1))
seqiplot(biofam.seq, withlegend=FALSE,
         cpal=greys,
         density=c(20, 20, 20, 20, -1, -1, -1, -1), 
         angle=c(45, 90, 45, 0, 0, 0, 0, 0))
seqiplot(biofam.seq, withlegend=FALSE,
         cpal=greys,
         density=c(20, 20, 20, 20, -1, -1, -1, -1), 
         angle=c(45, 90, 135, 0, 0, 0, 0, 0),
         add=TRUE)
         # Different angle for third state creates grid instead of patterns
seqlegend(biofam.seq, pos="center", ncol=3, fontsize=.7,
          cpal=greys,
          density=c(20, 20, 20, 20, -1, -1, -1, -1), 
          angle=c(45, 90, 45, 0, 0, 0, 0, 0))
seqlegend(biofam.seq, pos="center", ncol=3, fontsize=.7,
          cpal=greys,
          density=c(20, 20, 20, 20, -1, -1, -1, -1), 
          angle=c(45, 90, 135, 0, 0, 0, 0, 0))
          # Draws an additional legend instead of overwriting the first
##定义较小的黑色/灰色调色板,删除几乎白色的色调

灰色
TraMineR
不使用基本图形
ggplot2
也不使用
grid
(某些特殊功能除外)。大多数图形依赖于
条形图
。这是一个非常常见的问题,我对任何答案都很感兴趣。正如我的Matthias在上所解释的,您可以尝试使用
density
angle
参数,当
seqplot
调用此函数时,这些参数将传递给barplot,例如
seqiplot(mvad.seq,cpal=brewer.pal(6,“Greys”),密度=11:16,角度=1:6*5,边框=NA)
。然而,解决方案几乎令人信服。我也对专业的解决方案感兴趣。非常感谢您指出,TraMineR使用的是基本图。使用这个小技巧,密度/角度选项至少可以用来获得6个可微网格,再加上5个灰色阴影,这已经很重要了。
add=TRUE
选项在我做分组图时对我不起作用。第二个图只是第一个图中的一个子图上的灰色区域。也许“组”选项会创建自己的布局?我想知道如何应对这种情况。如果您使用
seqplot
group=
选项,那么,是的,它会自己调用
layout
。在这种情况下,您不能使用
group=
,您需要通过对每个组的数据集进行子集设置来生成每个组的图形。看看这个,谢谢你的澄清。但是我很好奇,如果这种方法适用于单个组图,而seqplot()会干扰布局,从而阻止这种方法用于多个组;那么在seqplot()中@MatthiasStuder就不可能实现这个方法了吗?可以肯定的是,在黑白印刷期刊上公布序列分析结果是一项非常常见的任务。应该有针对这一目标的工具,而这种方法似乎是一条简单的出路。