如何在ggplot2中设置y = rows和x =列?

时间:2018-05-07 18:30:14

标签: r ggplot2

在我提出问题之前,我应该指出我是R的新手,对于有经验的用户来说,这个问题本身可能是简单的。 我想使用ggplot2来充分利用其中的所有功能。但是,我遇到了一个我无法解决的问题。 如果我有如下数据框:

df = as.data.frame(cbind(rnorm(100,35:65),rnorm(100,25:35),rnorm(100,15:20),rnorm(100,5:10),rnorm(100,0:5)))
header = c("A","B","C","D","E")
names(df) = make.names(header)

绘制数据,其中行是Y,X是列,可以很容易地在基数R中完成,例如,这样:

par(mfrow=c(2,0))
stripchart(df, vertical = TRUE, method = 'jitter')
boxplot(df)

The picture shows the stripchart & boxplot of the data

然而,由于需要xy输入,因此无法在ggplot2中轻松完成相同操作。我找到的所有示例都绘制了一列与另一列,或将数据处理为列格式。但是,我想将y设置为dfx中的行作为列。如何实现这一目标?

1 个答案:

答案 0 :(得分:4)

您需要重塑数据才能获取这些图表。我认为这就是你要找的东西:

> library(ggplot2)
> library(reshape2) 
> df = as.data.frame(cbind(rnorm(100,35:65),rnorm(100,25:35),rnorm(100,15:20),rnorm(100,5:10),rnorm(100,0:5)))
> header = c("A","B","C","D","E")
> names(df) = make.names(header)
> df = melt(df)
 No id variables; using all as measure variables
> head(df)
  variable    value
1        A 36.75505
2        A 35.68714
3        A 36.44952
4        A 38.77236
5        A 39.79136
6        A 39.39672

> ggplot(df, aes(x = variable, y = value))
> ggplot(df, aes(x = variable, y = value)) + geom_boxplot()
> ggplot(df, aes(x = variable, y = value)) + geom_point(shape = 0, size = 20)

这是方块图: enter image description here

这是条形图: enter image description here

您可以更改aes()选项中的设置。有关详细信息,请参阅here