簡體   English   中英

如何將計數標簽添加到 R ggplot 中的百分比條形圖?

[英]How do I add count labels to a percentage barplot in R ggplot?

假設我們想使用 R ggplot 生成一個條形圖,顯示某個類別變量在另一個類別變量中的百分比。 下面是 R 中的一個小數據框和一些代碼來獲得我想要的漂亮的條形圖。

MYDATA <- data.frame(Region = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5),
                     Sex    = c("M", "F", "M", "F", "M", "F", "M", "F", "M", "F"),
                     Count  = c(185, 130, 266, 201, 304, 283, 102, 60, 55, 51))

library(ggplot2)

ggplot(data = MYDATA, aes(x = Region, y = Count, fill = Sex)) + 
       geom_bar(position = "fill", stat = 'identity') + 
       scale_y_continuous(labels = scales::percent) +   
       scale_fill_manual(values = c("Maroon1", "RoyalBlue1")) +
       ggtitle("Figure 1: Sex breakdown by Region") +
       xlab("Region") + ylab("Percentage")

在此處輸入圖像描述

現在,我想通過添加在條形圖內顯示原始計數值的文本來補充此條形圖。 對於女性,我希望計數顯示在圖表頂部的粉紅色條內。 對於男性,我希望計數顯示在圖表底部的藍色條內。 我試過使用geom_text但我不知道如何將標簽放在我想要的地方。 相反,我的嘗試通常導致將計數值置於它們自己的值,這破壞了圖中百分比的比例。 你們中有沒有學過的人能告訴我如何在不破壞情節的其余部分的情況下將原始計數值作為文本添加到條形圖中?

好的,所以在發布這個問題之后我想出了一個解決方案。 盡管回答了我自己的問題(抱歉,伙計們),但我還是會留下這篇文章,以防有人遇到他們需要解決的相同問題。 請隨時添加其他解決方案。

最終奏效的技巧是將問題分解為使用ifelse命令兩次調用geom_text為每個性別指定單獨的標簽,一次只為一個性別輸入標簽,並在每個語句中手動 y 定位到期望高度. 這是代碼和情節:

ggplot(data = MYDATA, aes(x = Region, y = Count, fill = Sex)) + 
       geom_bar(position = "fill", stat = 'identity') + 
       geom_text(aes(label = ifelse(Sex == "F", Count, "")), y = 0.95) +
       geom_text(aes(label = ifelse(Sex == "M", Count, "")), y = 0.05) +
       scale_y_continuous(labels = scales::percent) +   
       scale_fill_manual(values = c("Maroon1", "RoyalBlue1")) +
       ggtitle("Figure 1: Sex breakdown by Region") +
       xlab("Region") + ylab("Percentage");

在此處輸入圖像描述

暫無
暫無

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

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