首页 > 解决方案 > 如何在 ggplot2 中设置 y=rows 和 x=columns?

问题描述

在我提出问题之前,我应该指出我是 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)

图为数据的条形图和箱线图

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

标签: rggplot2

解决方案


您需要重塑数据才能获得这些图表。我想这就是你要找的:

> 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)

这是箱线图: 在此处输入图像描述

这是条形图: 在此处输入图像描述

您可以更改aes()选项中的设置。请参阅此处了解更多信息。


推荐阅读