如何在geom_bar()中更改x轴上的数字位置

问题描述 投票:-1回答:1

首先,抱歉我的英语不好:(。

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

所以我的问题是:如何更改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) 
r ggplot2 bar-chart geom-bar
1个回答
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变量转换回数值,我们可以按以下方式指定中断,在开始时插入“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

© www.soinside.com 2019 - 2024. All rights reserved.