如何在geom_bar()

时间:2018-08-10 13:04:17

标签: r ggplot2 bar-chart geom-bar

首先,对不起我的英语不好:(。

我对geom_bar有一个疑问:在我的绘图中,数字位于条形的中间。例如,Bäume似乎有将近50'0000棵树(IBaum = 5),但实际上在0和5之间有将近50'000棵树。

所以我的问题是:如何更改数字在x轴上的位置?

my plot

我当前的代码是:

p1 = ggplot(data = plotdat, 
            aes(x = factor(IB), y = Anzahl, fill = factor(PFT, levels = c(1,2,3,4)))) +
  geom_bar(stat = "identity", width = 0.8, position = "stack")+
  labs(title = TeX(paste("Anzahl der Bäume mit Wachstum $\\geq$ 0 zu $I_{Baum}$", 
                         sep = "" )), 
       x = TeX(paste("$I_{Baum} $", "$\\lbrack$%$\\rbrack$", "aus Inventur", invn[1], 
                     sep = " ")), 
       y = TeX("Anzahl der Bäume mit Wachstum $\\geq$ 0")) +
  scale_fill_manual("PFT", 
                    values = c("#95C11F", "#788938", "#243B0B", "#006633"), 
                    labels= c(1,2,3,4)) +
  theme_minimal(base_size = 14) 

1 个答案:

答案 0 :(得分:0)

如果x轴是连续的(而不是离散的),则可以将断点定位在非整数位置。这是一个玩具数据集供说明:

data <- mtcars %>% mutate(x = factor(cyl)) %>% count(x)

> data
# A tibble: 3 x 2
       x     n
  <fctr> <int>
1      4    11
2      6     7
3      8    14

x变量是此处的一个因子(对应于代码中的x = factor(IB))。如果按原样绘制,标签将居中于每个条形的中间。但是,如果将x变量 back 转换为数值,则可以按以下方式指定中断,即在开始处插入“ 0”标签(x = 0.5),然后将所有其他值移入标签向右按0.5:

ggplot(data, 
       aes(x = as.integer(x), y = n)) + 
  geom_col() +
  scale_x_continuous(breaks = c(0.5, 0.5 + seq_along(levels(data$x))),
                     labels = c("0", levels(data$x))) +
  theme_minimal()

plot