重新排列R中的框和胡须图

时间:2011-10-21 20:05:54

标签: r plot

我在R中有以下最小的示例代码:

data.time = c(1, 4, 8, 9, 2, 4, 1)  
data.difficulty = c("hard", "simple", "simple", "hard", "simple", "simple", "hard")  
library(lattice)  
bwplot(data.time ~ data.difficulty, xlab="Difficulty", ylab="Time")  

如果你绘制图形,你可以看到左侧是“硬”,右侧是“简单”。我想要扭转局面。有没有办法在不转换或修改原始数据的情况下执行此操作?我不想改变它,因为稍后将数据用于其他图形和分析。

谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用relevel函数将引用命令为“简单”。我必须首先将data.difficulty转换为因子,因为它是字符。

data.difficulty<-relevel(as.factor(data.difficulty), ref="simple")
bwplot(data.time ~ data.difficulty, xlab="Difficulty", ylab="Time") 

答案 1 :(得分:1)

我不知道将难度向量转换为一个因素是否违反了关于不更改数据的约束。其他函数很可能会在与原始字符向量相同的基础上对其进行处理。

dfrm <- data.frame(time=data.time, difficulty=data.difficulty) 
 dfrm$difficulty <- factor(dfrm$difficulty, levels=c("simple", "hard") )
 bwplot(time ~ difficulty, data=dfrm, xlab="Difficulty", ylab="Time")

答案 2 :(得分:1)

遵循其他答案:通过将数据组织为数据框(这样我们可以transform动态bwplot),这会破坏您的规则,但如果您能够站立它,它可能是更好地组织分析的一种方式......当来自同一组的变量被打包到数据框中而不是作为工作空间中的单个对象时,R中的许多事物(例如模型预测)变得更容易。只要您正确使用data=个参数,其余的命令也会更容易阅读。

data.time = c(1, 4, 8, 9, 2, 4, 1)  
data.difficulty = c("hard", "simple", "simple", "hard", 
                  "simple", "simple", "hard")  
mydata <- data.frame(time=data.time,difficulty=data.difficulty)
library(lattice)  
bwplot(time ~ difficulty, xlab="Difficulty", ylab="Time",
   data = transform(mydata,
       difficulty=relevel(difficulty,"simple")))