如何在facet_wrap(ed)geom_count图上添加标签?

时间:2019-04-05 08:20:33

标签: r ggplot2 facet-wrap

我正在使用facet_wrap创建一个多面图。我希望文本标签包含在气泡中。相反,似乎总数包含在标签中-即所有图表的编号都相同,但气泡大小不同(正确)。

(编辑)

我的代码:

func checkDayNumber() -> String {
    let ref = db.collection("Users").document(Auth.auth().currentUser!.uid).collection("startDay").getDocuments { (snapshot, error) in

        if error != nil {
            print("Error getting documents for checking number of days")
        } else {
            print(snapshot?.count)
            if let count = snapshot?.count {
                self.counter = count
                print(self.counter) (2)
          }
        }
      }
    print(counter) (1)
    return String(counter)
}

我希望气泡的大小将由气泡内的文字指示。但是实际结果是所有图形都具有相同的编号。我希望小气泡的数量与其大小成正比。

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是使用ggplot_build数据的代码与原始代码的类别不同。您需要先创建计数数据并将其用于绘图。

创建计数数据

library(tidyverse)
df_count <- df %>%
    count(Class, Category1, Category2)

情节

有两种方法可以合并这些新数据。

方法1

我展示的第一个示例是同时使用dfdf_count。此方法将最少修改您的代码:

g <- ggplot(df, aes(Category1, Category2))

g <- g + facet_wrap(Class ~ ., nrow = 3) + geom_count(col="tomato3", show.legend=F) + 
    geom_text(data = df_count, aes(Category1, Category2, label=n), size=2) + 
    scale_size_continuous(range = c(5, 10)) + 
    labs(subtitle="Count Plot", y="Category2", x="Category1", title="Cat1 vs Cat2")
g

添加了行geom_text(data = df_count, aes(Category1, Category2, label=n), size=2) +

方法2

此方法仅使用计数数据。它使用geom_point()代替geom_count(),并使用变量n更改大小。就代码的可读性而言,此方法可能更好。

g_alternative <- ggplot(df_count, aes(Category1, Category2,  label = n)) + 
    facet_wrap(Class ~ ., nrow = 3) + 
    geom_point(col="tomato3", aes(size = n),  show.legend=F) + 
    geom_text() + 
    scale_size_continuous(range = c(5, 10)) + 
    labs(subtitle="Count Plot", y="Category2", x="Category1", title="Cat1 vs Cat2")
g_alternative

输出看起来像这样:

enter image description here