我试图创建一个我需要的条形图,但我无法弄明白。详情如下所示。我有一个更大的数据框,但这是我的数据框的一个小例子:
SampleNumber = 1:5
Probability_n1 = c(1, 1, 1, 1, 1)
Probability_n2 = c(1.30066666666667e-14, 3.375e-17, 3.698e-16, 2.03733333333333e-17, 2.16866666666667e-19)
Probability_n3 = c(1.243e-28, 5.59956666666667e-35, 4.75333333333333e-34, 1.0569e-34, 1.21333333333333e-37)
Probability_n4 = c(2.266e-43, 4.36333333333333e-56, 4.47933333333333e-53, 1.39033333333333e-53, 2.33566666666667e-56)
Probability_n5 = c(1.7407e-57, 2.59733333333333e-76, 7.461e-73, 2.46833333333333e-72, 2.133e-76)
df = cbind(SampleNumber, Probability_n1, Probability_n2, Probability_n3, Probability_n4, Probability_n5)
df
SampleNumber Probability_n1 Probability_n2 Probability_n3 Probability_n4 Probability_n5
[1,] 1 1 1.300667e-14 1.243000e-28 2.266000e-43 1.740700e-57
[2,] 2 1 3.375000e-17 5.599567e-35 4.363333e-56 2.597333e-76
[3,] 3 1 3.698000e-16 4.753333e-34 4.479333e-53 7.461000e-73
[4,] 4 1 2.037333e-17 1.056900e-34 1.390333e-53 2.468333e-72
[5,] 5 1 2.168667e-19 1.213333e-37 2.335667e-56 2.133000e-76
我正在尝试创建一个堆叠的条形图(数据框中每个样本/行一个条形图),其中样本编号位于x轴上,y轴的概率使得每个概率(n) = 1,2,3,4,5)在每个样品的相同条中填充不同的颜色。
PS:据我所知,在我的例子中,n = 2,3,4,5值非常小,以显示在条形图上,但我的实际数据框有很多样本,其中不同的n值有很大的概率高于该样本的其他n值。
答案 0 :(得分:0)
您可以使用ggplot
进行可视化:
library(ggplot2)
首先,从您的data.frame
创建一个matrix
,然后使用数据表包中的melt()
从宽到长重新整形,它会为您提供:
head(data.table::melt(df, id.vars = "SampleNumber"))
SampleNumber variable value
1 1 Probability_n1 1.000000e+00
2 2 Probability_n1 1.000000e+00
3 3 Probability_n1 1.000000e+00
4 4 Probability_n1 1.000000e+00
5 5 Probability_n1 1.000000e+00
6 1 Probability_n2 1.300667e-14
然后只需创建一个条形图并使用fill
美学为概率添加颜色。
df <- data.frame(df)
data.table::melt(df, id.vars = "SampleNumber") %>%
ggplot() +
geom_bar(aes(y = value,
x = SampleNumber,
fill = variable),
stat = 'identity')