I would separate the calculations out from the plotting for full control.
You have provided code but not data so your example is not easily reproducible.
library(tidyverse)
# example data as wasnt provided
(df <- expand_grid(Has_Children=c("Yes","No"),
User_Gender=c("M","F"),
rnum = 1:3) %>% mutate(Monthly_Fee=rnorm(12,100,25)))
# solution
(smry_df <- group_by(df,
Has_Children,
User_Gender) %>% summarise(mean_fee = mean(Monthly_Fee)))
ggplot(smry_df,
mapping=aes(x = Has_Children, y = mean_fee)) +
geom_col() +
labs(title = "'Monthly_Fee' by 'User_Gender' and 'Has_Children'", x = "Has Children (Yes or No)", y = "Monthly fee ($)",) +
facet_wrap(vars(User_Gender), scales = "free", nrow = 1, strip.position = "top") +
geom_text(aes(label = scales::comma(mean_fee,accuracy = 0.01)),nudge_y = 5)
For the future ; you can share your data in a forum friendly way by passing the data to share to the dput() function.
If your data is too large you can use standard methods to reduce it before sending to dput().
When you come to share the dput() text that represents your data, please be sure to format your post with triple backticks on the line before your code begins to format it appropriately.
```
( example_df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6,
5, 4.4, 4.9), Sepal.Width = c(3.5, 3, 3.2, 3.1, 3.6, 3.9, 3.4,
3.4, 2.9, 3.1), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7,
1.4, 1.5, 1.4, 1.5), Petal.Width = c(0.2, 0.2, 0.2, 0.2, 0.2,
0.4, 0.3, 0.2, 0.2, 0.1), Species = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L), .Label = c("setosa", "versicolor", "virginica"
), class = "factor")), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame")))
```