我正在尝试使用geom_bar获取条形图
用线连接。 如何在样本之间绘制连接线?
ggplot()+
geom_bar(data = data_bar,
aes(x = Sample, y =Percentage, fill = Taxon),
colour = 'white', width =0.3, stat="identity")+
guides(fill= guide_legend(ncol = 1))
我同时使用geom_bar和geom_line进行了尝试,但看起来很奇怪
。
似乎连接的线从A样本的中心开始到B样本的中心。
ggplot()+
geom_bar(data = data_bar,
aes(x = Sample, y =Percentage, fill = Taxon),
colour = 'white', width =0.3, stat="identity")+
geom_line(data = rev(data),
aes(x = Sample, y =Percentage, group = Taxon, color = Taxon),
size = 0.3, stat = 'identity')+
guides(fill= guide_legend(ncol = 1))
我想获得更好的图,例如连接的线从A样本条的右边缘开始到B样本条的左边缘开始。
我该怎么做?
答案 0 :(得分:3)
我不知道执行此操作的内置方法,但是如果知道标杆的位置,则可以使用set.seed(0)
data_bar <- data.frame(
stringsAsFactors = F,
Sample = rep(c("A", "B"), each = 10),
Percentage = runif(20),
Taxon = rep(1:10, by = 2)
)
来完成此操作。
首先提供一些虚假数据:
library(tidyverse)
ggplot() +
geom_bar(data = data_bar,
aes(x = Sample, y =Percentage, fill = Taxon),
colour = 'white', width = 0.3, stat="identity") +
geom_segment(data = tidyr::spread(data_bar, Sample, Percentage)
colour = "white",
aes(x = 1 + 0.3/2,
xend = 2 - 0.3/2,
y = cumsum(A),
yend = cumsum(B))) +
theme(panel.background = element_rect(fill = "black"), # to make connecting points
panel.grid = element_blank()) # show up more clearly
为了简化连接,我将数据扩展为宽格式,以便每条连接线都获得一行,其中一列与第一个Sample相关,另一列与第二个Sample相关:
BinaryArray