Search code examples
rggplot2geom-text

Bars disappear when I add geom_text() to show label on the bars in ggplot2


This is my code and when I add the last line of code, which is geom_text() to add labels on the bars, my bars disappears. Moreover, this happens in geom_bar(position="fill") but not in geom_bar(position="stack"). Couldn't find out the reason. My graph is a circular bar graph. Please help me in this regard. Thanks in advance. This is my data

structure(list(Corporations = c("Nichtfinanzielle Kapitalgesellschaften", 
"Nichtfinanzielle Kapitalgesellschaften", "Nichtfinanzielle Kapitalgesellschaften", 
"Nichtfinanzielle Kapitalgesellschaften", "Nichtfinanzielle Kapitalgesellschaften", 
"Nichtfinanzielle Kapitalgesellschaften", "Nichtfinanzielle Kapitalgesellschaften", 
"Nichtfinanzielle Kapitalgesellschaften", "Nichtfinanzielle Kapitalgesellschaften", 
"Finanzielle Kapitalgellschaften", "Finanzielle Kapitalgellschaften", 
"Finanzielle Kapitalgellschaften", "Finanzielle Kapitalgellschaften", 
"Finanzielle Kapitalgellschaften", "Finanzielle Kapitalgellschaften", 
"Finanzielle Kapitalgellschaften", "Finanzielle Kapitalgellschaften", 
"Finanzielle Kapitalgellschaften", "Private Haushalte", "Private Haushalte", 
"Private Haushalte", "Private Haushalte", "Private Haushalte", 
"Private Haushalte", "Private Haushalte", "Private Haushalte", 
"Private Haushalte", "Staat", "Staat", "Staat", "Staat", "Staat", 
"Staat", "Staat", "Staat", "Staat", "Private Organisationen ohne Erwerbszweck", 
"Private Organisationen ohne Erwerbszweck", "Private Organisationen ohne Erwerbszweck", 
"Private Organisationen ohne Erwerbszweck", "Private Organisationen ohne Erwerbszweck", 
"Private Organisationen ohne Erwerbszweck", "Private Organisationen ohne Erwerbszweck", 
"Private Organisationen ohne Erwerbszweck", "Private Organisationen ohne Erwerbszweck"
), Instruments = c("Währungsgold und Sonderziehungsrechte", "Bargeld", 
"Einlagen", "Schuldverschreibungen", "Kredite", "Anteilsrechte", 
"Versicherungstechnische Rückstellungen", "Finanzderivate und Mitarbeiteroptionen", 
"Sonstige Forderungen", "Währungsgold und Sonderziehungsrechte", 
"Bargeld", "Einlagen", "Schuldverschreibungen", "Kredite", "Anteilsrechte", 
"Versicherungstechnische Rückstellungen", "Finanzderivate und Mitarbeiteroptionen", 
"Sonstige Forderungen", "Währungsgold und Sonderziehungsrechte", 
"Bargeld", "Einlagen", "Schuldverschreibungen", "Kredite", "Anteilsrechte", 
"Versicherungstechnische Rückstellungen", "Finanzderivate und Mitarbeiteroptionen", 
"Sonstige Forderungen", "Währungsgold und Sonderziehungsrechte", 
"Bargeld", "Einlagen", "Schuldverschreibungen", "Kredite", "Anteilsrechte", 
"Versicherungstechnische Rückstellungen", "Finanzderivate und Mitarbeiteroptionen", 
"Sonstige Forderungen", "Währungsgold und Sonderziehungsrechte", 
"Bargeld", "Einlagen", "Schuldverschreibungen", "Kredite", "Anteilsrechte", 
"Versicherungstechnische Rückstellungen", "Finanzderivate und Mitarbeiteroptionen", 
"Sonstige Forderungen"), Q1.19 = c(NA, 6299, 555223, 2427, 32995, 
2189603, 56996, 31362, 1198580, 139931, 38424, 4340085, 3202446, 
60692, 2975850, 89437, 588297, 342623, NA, 230878, 2251130, 12242, 
1625426, 1255442, 2281472, 0, 30619, NA, 487, 319099, 6259, 38429, 
617751, 948, 41669, 99347, NA, NA, 62271, 1840, 15811, 92797, 
NA, 422, NA), Q2.19 = c(NA, 6454, 551837, 2085, 31926, 2198338, 
57709, 32616, 1178917, 148943, 39256, 4359950, 3303698, 60708, 
3056242, 89612, 726303, 358358, NA, 239382, 2284960, 12250, 1645940, 
1292362, 2297914, 0, 31502, NA, 487, 330817, 6150, 39239, 645949, 
954, -41925, 94741, NA, NA, 62626, 1839, 15866, 95467, NA, 362, 
NA), Q3.19 = c(NA, 6466, 573901, 2295, 32219, 2232079, 58430, 
32051, 1203447, 162442, 39311, 4261998, 3420453, 60885, 3157147, 
91016, 920818, 382937, NA, 249723, 2298254, 12225, 1667098, 1322047, 
2313450, 0, 32251, NA, 487, 330779, 6004, 42480, 676359, 960, 
-47370, 108842, NA, NA, 62854, 1913, 16052, 98454, NA, 480, NA
), Q4.19 = c(NA, 7386, 590593, 2183, 33011, 2317831, 59160, 31542, 
1229358, 161204, 44712, 4089901, 3332533, 60485, 3266643, 91257, 
761489, 440720, NA, 260243, 2337146, 12045, 1686127, 1383188, 
2331436, 0, 32043, NA, 487, 313552, 5315, 40097, 670891, 966, 
-42715, 104839, NA, NA, 61959, 1919, 16446, 103620, NA, 380, 
NA), Q1.20 = c(NA, 6742, 588896, 1979, 33086, 2103282, 59900, 
44907, 1178927, 173489, 49423, 4494126, 3354457, 61080, 2975370, 
90025, 1102066, 400057, NA, 279788, 2341738, 10748, 1703401, 
1220313, 2354882, 0, 31439, NA, 487, 350979, 5709, 41296, 664676, 
972, -44212, 115474, NA, NA, 62339, 1740, 16510, 94113, NA, 412, 
NA)), row.names = c(NA, -45L), class = c("tbl_df", "tbl", "data.frame"
))

This is my code;

ggplot(data, aes(x = Corporations, y = Q1.19, fill = Instruments)) +
  geom_bar(position = "fill", stat = "identity") +
  coord_polar() +
  ggtitle(expression(paste(underline("Quartal 1, 2019")))) +
  theme(legend.box.background = element_rect(color="red", size=2),
        legend.box.margin = margin(16, 6, 6, 6),
        panel.background = element_blank(),
        panel.border = element_blank(), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.y=element_blank(), 
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank(),
        plot.title = element_text(hjust = 0.5, size = 20)) +
  scale_x_discrete(labels = wrap_format(10)) +
  geom_text(aes(y=Q1.19, label = paste(Q1.19)), 
            size = 2, position = position_stack(vjust = 0.7))

Solution

  • Try the code below. I changed position_stack in geom_text to position_fill.

    ggplot(data, aes(x = Corporations, y = Q1.19, fill = Instruments)) +
      geom_bar(position = "fill", stat = "identity") +
      coord_polar() +
      ggtitle(expression(paste(underline("Quartal 1, 2019")))) +
      theme(legend.box.background = element_rect(color="red", size=2),
            legend.box.margin = margin(16, 6, 6, 6),
            panel.background = element_blank(),
            panel.border = element_blank(), 
            panel.grid.major = element_blank(), 
            panel.grid.minor = element_blank(),
            axis.title.x = element_blank(),
            axis.title.y = element_blank(),
            axis.text.y=element_blank(), 
            axis.ticks.x = element_blank(),
            axis.ticks.y = element_blank(),
            plot.title = element_text(hjust = 0.5, size = 20)) +
      scale_x_discrete(labels = wrap_format(10)) +
      geom_text(aes(y=Q1.19, label = paste(Q1.19)), 
                size = 2, position = position_fill(vjust = 0.7))