我正在使用ggplot2中的geom_bar在一个躲闪的条形图中绘制8个条件的平均值。我的y轴从-200变为1000.8个条件中的两个具有负值,其余的具有正值。目前,正值的条形从0开始。我希望所有条形从-200开始(即从-200填充到它们各自的值)。有没有一种简单的方法来实现这一目标?
graph <- ggplot(data=data, aes(x, y, fill = z)) +
geom_bar(stat="identity", position = "dodge", width = 0.4) +
scale_y_continuous(limits = c(-200, 1000), breaks =c(-200,0,200,400,600,800,1000), expand = c(0,0))
x有8种手段(4,423,-57,724,14,556,37,614)
我希望每个柱子从-200到它们的平均值(200到4,-200到423等等)填充。目前,酒吧从0填充到他们的平均值。我怎么能改变这个?
由于
答案 0 :(得分:0)
对于基线为-200而不是零的条形图,您可以将y值加200,然后重新标记y轴,使标签比“默认”标签小200。您尚未提供样本数据,因此请告诉我这是不是您正在寻找的内容。
# Fake data (adapted from @lawyeR)
x <- rep(c("AA", "BB", "CC", "DD"), 2)
y <- c(4, 423, -57, 724, 14, 556, 37, 614)
z <- rep(c("A", "B", "C", "D"), 2)
data <- data.frame(x=factor(x), y=y, z=z)
library(dplyr)
# Add a grouping variable for dodging multiple bars with the same x value
data = data %>% group_by(x) %>%
arrange(y) %>%
mutate(dodgeGroup = 1:n())
ggplot(data=data, aes(x, y + 200, fill = z, group=dodgeGroup)) +
geom_bar(stat="identity", position = "dodge", width = 0.5,
colour="grey20", lwd=0.3) +
scale_y_continuous(limits = c(-200,1000), breaks=seq(-200,1000,200),
labels=seq(-200,1000,200) - 200)