为什么我的输入箱线图代码不适用于我的矩阵?
Why wont my input boxplot code not work for my matrix?
我在获取数据框的绘图时遇到问题。下面附上我的示例矩阵数据框。此 class 已确认为数据帧。
Dataframe (10 rows, 59 columns originally)
我最初尝试使用 facet_grid 创建一个情节,但结果很差。
(错误:至少一层必须包含所有分面变量:x
.
- 情节缺失
x
- 缺少第 1 层
x
)
相反,我决定简化它并创建一个箱形图,所有内容都在一张图上。但是,我的图表如下所示:
ugly graph
我的简单剧情代码如下;有谁知道为什么事情被策划得不好?任何见解都是有帮助的。这是我的第一个 post,所以我希望格式正确。
ggplot(newdf, aes(x, y, fill = x))+ geom_boxplot()
最终目标是为每个基因显示一个箱线图,其中包含每个箱子内个体的观察结果。我正在关注这个例子:example
首先,在执行示例时,您应该确保将其中的变量名称更改为您的变量名称。
在 ggplot(newdf, aes(x, y, fill = x))+ geom_boxplot()
中,错误可能是因为您在 newdf 中既没有 x 列也没有 y 列。
或者,即使您这样做了,它们也不是您实现目标所需要的。
最终目标是
a boxplot shown for each gene with the observations of the individuals within each box
你的 x 变量需要是一个包含基因名称的列,y 是一个包含这些基因的观察值的列。
换句话说,您需要将 data.frame 重新格式化为长格式(现在您拥有所谓的宽格式)。
有很多方法可以做到这一点,一个简单的以 R 为基数的方法是重复每列的名称乘以基因列的行数,然后将 data.frame 取消列出到值列中,就像这样:
# needed a a data.frame so made a fake one to illustrate :
newdf <- data.frame(gene1 = runif(10, ), gene2 = runif(10), gene3 = runif(10))
# this convert your data.frame from wide to long
newdf.long <- data.frame(
gene = rep(names(newdf), each=nrow(newdf)),
value = unlist(newdf),
row.names = NULL
)
然后,您需要确保在构建 ggplot 时使用正确的变量名称:
ggplot(newdf.long, aes(x = gene, y = value, fill = gene)) + geom_boxplot()
我在获取数据框的绘图时遇到问题。下面附上我的示例矩阵数据框。此 class 已确认为数据帧。
Dataframe (10 rows, 59 columns originally)
我最初尝试使用 facet_grid 创建一个情节,但结果很差。
(错误:至少一层必须包含所有分面变量:x
.
- 情节缺失
x
- 缺少第 1 层
x
)
相反,我决定简化它并创建一个箱形图,所有内容都在一张图上。但是,我的图表如下所示: ugly graph
我的简单剧情代码如下;有谁知道为什么事情被策划得不好?任何见解都是有帮助的。这是我的第一个 post,所以我希望格式正确。
ggplot(newdf, aes(x, y, fill = x))+ geom_boxplot()
最终目标是为每个基因显示一个箱线图,其中包含每个箱子内个体的观察结果。我正在关注这个例子:example
首先,在执行示例时,您应该确保将其中的变量名称更改为您的变量名称。
在 ggplot(newdf, aes(x, y, fill = x))+ geom_boxplot()
中,错误可能是因为您在 newdf 中既没有 x 列也没有 y 列。
或者,即使您这样做了,它们也不是您实现目标所需要的。
最终目标是
a boxplot shown for each gene with the observations of the individuals within each box
你的 x 变量需要是一个包含基因名称的列,y 是一个包含这些基因的观察值的列。
换句话说,您需要将 data.frame 重新格式化为长格式(现在您拥有所谓的宽格式)。
有很多方法可以做到这一点,一个简单的以 R 为基数的方法是重复每列的名称乘以基因列的行数,然后将 data.frame 取消列出到值列中,就像这样:
# needed a a data.frame so made a fake one to illustrate :
newdf <- data.frame(gene1 = runif(10, ), gene2 = runif(10), gene3 = runif(10))
# this convert your data.frame from wide to long
newdf.long <- data.frame(
gene = rep(names(newdf), each=nrow(newdf)),
value = unlist(newdf),
row.names = NULL
)
然后,您需要确保在构建 ggplot 时使用正确的变量名称:
ggplot(newdf.long, aes(x = gene, y = value, fill = gene)) + geom_boxplot()