如何在R

时间:2017-02-14 01:28:18

标签: r graph ggplot2 boxplot

我正在尝试更改此框图中的x轴顺序。

[现在订单是放大镜,显微镜和视频,我想把它改成显微镜,放大镜然后视频]

数据框示例如下

 Label      Mental Physical Temporal Performance Effort Frustration sum
 Microscope  10     10      10       10     10      10    60
 Microscope  10     10      10       10     10      10    60
 Loupe       20     20      20       20     20      20    120 
 Loupe       20     20      20       20     20      20    120 
 Video       15     15      15       20     20      20    105 
 Video       15     15      15       20     20      20    105 

这是我现在拥有的boxplot boxplot1

这是我的ggplot代码

  mydata <- read.csv("boxplotyiyu2.csv",header=TRUE)
  dfm <- melt(mydata, id.var = "Label")
  ggplot(data = dfm, aes(x=variable, y=value)) + geom_boxplot(aes(fill=Label),width=0.5)+ xlab("Demand") + ylab("NASA-TLX Scores")

我试过这个,但结果不正确。

dfm$variable <- factor(dfm$variable,levels = c("Microscope","Loupe","Video"))

另一个问题是如何修改多个箱图的y轴。 我有七个箱图,但我想改变每个小块的y轴。 boxplot2

(数据框与上面的类似,只需用mental数据替换mental,physical ...)

我的代码是

  df.m <- melt(mydata, id.var = "Label")
  p <- ggplot(data = df.m, aes(x=variable, y=value))
  p <- p + geom_boxplot(aes(fill=Label))
  p <- p + facet_wrap( ~ variable, scales="free")
  p <- p + xlab("Angle") + ylab("Degree")

请帮我个忙!真的很感激!

1 个答案:

答案 0 :(得分:1)

您需要使用factor函数重新定义因子的顺序。

#Sample data
Label<-c("Microscope", "Microscope", "Loupe", "Loupe", "Video", "Video")
mydata<-data.frame(Label)

#print out
levels(mydata$Label)

mydata$Label<-factor(mydata$Label, levels=c("Microscope", "Loupe",  "Video"))
#print out
levels(mydata$Label)

有关更多信息,请参阅cookbook-r.com: http://www.cookbook-r.com/Manipulating_data/Changing_the_order_of_levels_of_a_factor/