R|ggplot2:无序堆叠条形图
R|ggplot2: unordered stacked bar graph
我有一个如下所示的数据集:
samp.data <- structure(list(Track = c(1,1,1,1,1,1,1,1,2,2,2),
Base = c("A","C","B","A","D","D","C","A","A","B","B"),
Length = c(1,1,1,1,2,3,1,1,1,1,1)),
.Names = c("Track", "Base", "Length"), class = "data.frame",row.names = c(NA, 11L))
# Track Base Length
# 1 1 A 1
# 2 1 C 1
# 3 1 B 1
# 4 1 A 1
# 5 1 D 2
# 6 1 D 3
# 7 1 C 1
# 8 1 A 1
# 9 2 A 1
# 10 2 B 1
# 11 2 B 1
我正在尝试绘制一个无序堆积条,x 轴为轨道,y 轴为长度。换句话说,条形图不会将 A 碱基组合在一起并将其绘制为 1+1+1+1=4 的一个长度。它会按顺序绘制每个基地。首先,它会在轨道 1 中绘制长度为 1 的 A 碱基,长度为 1 的 C 碱基,长度为 1 的 B 碱基,长度为 1 的 A 碱基,长度为 2 的 D 碱基,等等。
下面是我要描述的内容的粗略 ASCII 图:
| C
L | Y
e | Y Key
n | R A = Red
g | B B B = Blue
t | B G C = Green
h | R R D = Yellow
----------
2 1
Track
抱歉,如果解释有点混乱。感谢您的帮助!
编辑:这个问题与可能重复的问题不同,因为我想取消对堆叠部分的分组。
只需使用 geom_bar(stat='identity')
,将您的 x
设置为 Track,将您的 y
设置为 length - 一切正常。
注意 - 我将你的 Base 转换为因子(有意义),以及你的 Track(对我来说也有意义,但如果你想保留它的数字也没关系。你可能希望添加一个 + scale_x_discrete()
然后为了让您的曲目在 x 轴上显示为整数)。
samp.data$Base <- factor(samp.data$Base)
samp.data$Track <- factor(samp.data$Track)
ggplot(samp.data, aes(x=Track, y=Length, fill=Base)) +
geom_bar(stat='identity') +
scale_fill_manual(values=c('red', 'blue', 'green', 'yellow'))
最后一行随意设置颜色。
如果您希望反转 x 轴顺序(以便您的轨道 2 先出现),请执行 + scale_x_reverse()
.
我不知道你问题中的 "ungroup the base" 是什么意思,但假设你想围绕每个 "chunk" 可以添加的 DNA 画一个轮廓(例如)colour="black"
在 geom_bar
中(例如在轨道 1 中,有一个长度为 2 的 D 紧接着是一个长度为 3 的 D,因此它被绘制为一个长度为 5 的大 D - 添加 colour="black"
勾勒出 2-chunk尽管它们仍然具有相同的颜色)。
我有一个如下所示的数据集:
samp.data <- structure(list(Track = c(1,1,1,1,1,1,1,1,2,2,2),
Base = c("A","C","B","A","D","D","C","A","A","B","B"),
Length = c(1,1,1,1,2,3,1,1,1,1,1)),
.Names = c("Track", "Base", "Length"), class = "data.frame",row.names = c(NA, 11L))
# Track Base Length
# 1 1 A 1
# 2 1 C 1
# 3 1 B 1
# 4 1 A 1
# 5 1 D 2
# 6 1 D 3
# 7 1 C 1
# 8 1 A 1
# 9 2 A 1
# 10 2 B 1
# 11 2 B 1
我正在尝试绘制一个无序堆积条,x 轴为轨道,y 轴为长度。换句话说,条形图不会将 A 碱基组合在一起并将其绘制为 1+1+1+1=4 的一个长度。它会按顺序绘制每个基地。首先,它会在轨道 1 中绘制长度为 1 的 A 碱基,长度为 1 的 C 碱基,长度为 1 的 B 碱基,长度为 1 的 A 碱基,长度为 2 的 D 碱基,等等。
下面是我要描述的内容的粗略 ASCII 图:
| C
L | Y
e | Y Key
n | R A = Red
g | B B B = Blue
t | B G C = Green
h | R R D = Yellow
----------
2 1
Track
抱歉,如果解释有点混乱。感谢您的帮助!
编辑:这个问题与可能重复的问题不同,因为我想取消对堆叠部分的分组。
只需使用 geom_bar(stat='identity')
,将您的 x
设置为 Track,将您的 y
设置为 length - 一切正常。
注意 - 我将你的 Base 转换为因子(有意义),以及你的 Track(对我来说也有意义,但如果你想保留它的数字也没关系。你可能希望添加一个 + scale_x_discrete()
然后为了让您的曲目在 x 轴上显示为整数)。
samp.data$Base <- factor(samp.data$Base)
samp.data$Track <- factor(samp.data$Track)
ggplot(samp.data, aes(x=Track, y=Length, fill=Base)) +
geom_bar(stat='identity') +
scale_fill_manual(values=c('red', 'blue', 'green', 'yellow'))
最后一行随意设置颜色。
如果您希望反转 x 轴顺序(以便您的轨道 2 先出现),请执行 + scale_x_reverse()
.
我不知道你问题中的 "ungroup the base" 是什么意思,但假设你想围绕每个 "chunk" 可以添加的 DNA 画一个轮廓(例如)colour="black"
在 geom_bar
中(例如在轨道 1 中,有一个长度为 2 的 D 紧接着是一个长度为 3 的 D,因此它被绘制为一个长度为 5 的大 D - 添加 colour="black"
勾勒出 2-chunk尽管它们仍然具有相同的颜色)。