簡體   English   中英

R-基線不從零開始的ggplot條形圖

[英]R - ggplot bar graph with baseline that doesn't start at zero

我正在使用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填充到其均值。 我該如何更改?

謝謝

對於基線為-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)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM