【发布时间】:2019-03-24 11:47:55
【问题描述】:
我希望将两个不同的数据集相互定位,例如当您有 position="dodge"(侵蚀和沉积区域)时,然后绘制两个线图,显示每个河段的侵蚀和沉积速率。现在,沉积区域和侵蚀条形图相互重叠。如果我重新组织数据并用 geom_bar(position="dodge") 绘制它(见右下角),我可以让它们堆叠起来,但在这个过程中,我的费率数据也被表示为一个条形图,它我不想。先感谢您。
EroDepoStuff <- tibble::tribble(
~Reach, ~Total.lateral.erosion, ~Total.lateral.deposition, ~Lateral.erosion.rate, ~Lateral.deposition.rate,
"Reach 1", 44.818334, 17.400127, 4.4818334, 1.7400127,
"Reach 2", 91.865675, 91.39827, 9.1865675, 9.139827,
"Reach 3", 7.40573, 16.654819, 0.740573, 1.6654819,
"Reach 4", 25.214554, 52.084122, 2.5214554, 5.2084122,
"All", 169.304293, 177.537338, 16.9304293, 17.7537338
)
EroDepoGraph <- ggplot(EroDepoStuff,aes(x=Reach,group=4)) +
geom_bar(aes(y=Total.lateral.erosion,fill="Lateral erosion"),position="dodge",stat="identity") +
geom_point(aes(y=Lateral.erosion.rate*10,colour="Lateral erosion rate")) +
geom_line(aes(y=Lateral.erosion.rate*10,colour="Lateral erosion rate")) +
geom_bar(aes(y=Total.lateral.deposition,fill="Lateral deposition"),position="dodge",stat="identity")+
geom_line(aes(y=Lateral.deposition.rate*10,colour="Lateral deposition rate")) +
geom_point(aes(y=Lateral.deposition.rate*10,colour="Lateral deposition rate")) +
labs(y="Area (sq km)") +
scale_fill_manual(values=c("Lateral erosion"="skyblue4","Lateral deposition"="blue")) +
scale_colour_manual(values=c("Lateral erosion rate"="violetred3","Lateral deposition rate"="tan1")) +
labs(color = "", fill = "")
#adding second axis
EroDepoGraph <- EroDepoGraph + scale_y_continuous(sec.axis = sec_axis(~./10,name = expression(paste("Rate (sq km/yr)"))))
#formatting axes
EroDepoGraph <- EroDepoGraph + theme(
axis.title.x = element_blank(),
axis.title.y = element_text(size=11),
axis.text.x = element_text(size=11,angle=90,hjust=1),
legend.position="bottom",
legend.spacing.y = unit(-0.1, "cm"),
plot.title = element_text(size=12, face="bold")
)
EroDepoGraph
reOrganisedData <- ReorderedData <- tibble::tribble(
~Reach, ~Value, ~Type,
"Reach 1", 44.818334, "Total lateral erosion",
"Reach 2", 91.865675, "Total lateral erosion",
"Reach 3", 7.40573, "Total lateral erosion",
"Reach 4", 25.214554, "Total lateral erosion",
"All", 169.304293, "Total lateral erosion",
"Reach 1", 17.400127, "Total.lateral.deposition",
"Reach 2", 91.39827, "Total.lateral.deposition",
"Reach 3", 16.654819, "Total.lateral.deposition",
"Reach 4", 52.084122, "Total.lateral.deposition",
"All", 177.537338, "Total.lateral.deposition",
"Reach 1", 4.4818334, "Lateral erosion rate",
"Reach 2", 9.1865675, "Lateral erosion rate",
"Reach 3", 0.740573, "Lateral erosion rate",
"Reach 4", 2.5214554, "Lateral erosion rate",
"All", 16.9304293, "Lateral erosion rate",
"Reach 1", 1.7400127, "Lateral deposition rate",
"Reach 2", 9.139827, "Lateral deposition rate",
"Reach 3", 1.6654819, "Lateral deposition rate",
"Reach 4", 5.2084122, "Lateral deposition rate",
"All", 17.7537338, "Lateral deposition rate"
)
【问题讨论】:
-
将两个总计列合并为一列,将两个比率列合并为另一列。然后你可以在条形图上使用 position="dodge"。
-
感谢您的回复。我已经尝试过了(如底部的数据集所示),但在此过程中,折线图最终显示为我不想要的条形图/:@iod