r - 如何在 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
为我的行df
和x
列。如何实现?
解决方案
您需要重塑数据才能获得这些图表。我想这就是你要找的:
> 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()
选项中的设置。请参阅此处了解更多信息。
推荐阅读
- vuejs2 - Vuex:添加到原型,以便我可以执行 object.save() 之类的操作?
- sql - 使用 unnest 函数在 Presto w/o 中提取数组元素
- python - Maximo 自动化脚本是否可以根据从另一个值列表中的选择启用或禁用来自值列表的值?
- android - 使用 BottomNavigationView 按下后退按钮时未加载上一个片段
- python - 当包含索引的张量的长度大于 32 时,使用 tensorflow.gather_nd 的问题
- javascript - redux reducer 的奇怪行为?
- flutter - Flutter-为什么我看不到下拉列表中的数据
- elasticsearch - 使用 Flink Rich InputFormat 创建 Elasticsearch 的输入格式
- angular - 预期未定义的定义 Karma Jasmine 单元测试用例
- insomnia - 无法发布到 mongo db,“错误:ValidationError: name: Path `name` is required。”