仅使用数字的堆叠条形图
Stacked Barplot using only numerics
我有一个包含 3 列的数据框。第一个 'Position',第二个 'Frac1' 作为分数 1,最后是 Frac2",这是 '1 - Frac1' 之间的差异。
我想使用 'Position' 作为 'x',使用值“0 到 1”作为 'y' 来制作堆叠条形图,并且每个位置都会有一部分 'Frac1',其余的将填充为'Frac2'。
Position <- seq(50)
Frac1 <- runif(50)
Frac2 <- 1-Frac1
A <- data.frame(cbind(Position, Frac1, Frac2))
barplot(Frac1, ylim=c(0,1), xlab = "POSITION", ylab = "Fraction")
ggplot() + geom_bar(aes(fill=A$Frac1, y=1, x=A$Position),
data = A, stat="identity")
但是这些图并没有把我放在两列中。
我想要的是这样的
我们可以重塑为 'long' 格式,然后用 ggplot
绘图
library(dplyr)
library(tidyr)
library(ggplot2)
A %>%
pivot_longer(cols = starts_with('Frac'), values_to = 'Fraction') %>%
ggplot(aes(x = Position, y = Fraction, fill = name)) +
geom_col()
或使用gather
A %>%
gather(name, Fraction, starts_with('Frac')) %>%
ggplot(aes(x = Position, y = Fraction, fill = name)) +
geom_col()
或在base R
barplot(`colnames<-`(t(A[-1]), A$Position), legend = TRUE)
我有一个包含 3 列的数据框。第一个 'Position',第二个 'Frac1' 作为分数 1,最后是 Frac2",这是 '1 - Frac1' 之间的差异。
我想使用 'Position' 作为 'x',使用值“0 到 1”作为 'y' 来制作堆叠条形图,并且每个位置都会有一部分 'Frac1',其余的将填充为'Frac2'。
Position <- seq(50)
Frac1 <- runif(50)
Frac2 <- 1-Frac1
A <- data.frame(cbind(Position, Frac1, Frac2))
barplot(Frac1, ylim=c(0,1), xlab = "POSITION", ylab = "Fraction")
ggplot() + geom_bar(aes(fill=A$Frac1, y=1, x=A$Position),
data = A, stat="identity")
但是这些图并没有把我放在两列中。
我想要的是这样的
我们可以重塑为 'long' 格式,然后用 ggplot
library(dplyr)
library(tidyr)
library(ggplot2)
A %>%
pivot_longer(cols = starts_with('Frac'), values_to = 'Fraction') %>%
ggplot(aes(x = Position, y = Fraction, fill = name)) +
geom_col()
或使用gather
A %>%
gather(name, Fraction, starts_with('Frac')) %>%
ggplot(aes(x = Position, y = Fraction, fill = name)) +
geom_col()
或在base R
barplot(`colnames<-`(t(A[-1]), A$Position), legend = TRUE)