0

I would kindly like to ask for your help. I am trying to extend the graph grid below in order to fully display the three graphs. Everywhere I looked, I couldn't find any clues how to resize the actual grid, not each of the plots within them.

Graph is squeezed

This is the code I am using:

p1 <- df %>%
    filter(df$economic_area == "Poorer areas") %>%
    group_by(cand_nm) %>%
    summarise(sum = sum(contb_receipt_amt)) %>%
    arrange(desc(sum)) %>%
     ggplot(aes(x = reorder(cand_nm, -sum), y=sum)) + geom_bar(stat = "identity") + 
      theme(axis.text.x = element_text(angle = 55, hjust = 1)) + 
      scale_y_continuous(labels = comma) + 
      labs(x='Candidate', 
           y='Recieved donations in USD', 
           title='Donations per candidate from poorer areas')

p2 <- df %>%
    filter(df$economic_area == "Middle income areas") %>%
    group_by(cand_nm) %>%
    summarise(sum = sum(contb_receipt_amt)) %>%
    arrange(desc(sum)) %>%
     ggplot(aes(x = reorder(cand_nm, -sum), y=sum)) + geom_bar(stat = "identity") + 
      theme(axis.text.x = element_text(angle = 55, hjust = 1)) + 
      scale_y_continuous(labels = comma) + 
      labs(x='Candidate', 
           y='Recieved donations in USD', 
           title='Donations per candidate from middle income areas')

p3 <- df %>%
    filter(df$economic_area == "Upper class areas") %>%
    group_by(cand_nm) %>%
    summarise(sum = sum(contb_receipt_amt)) %>%
    arrange(desc(sum)) %>%
     ggplot(aes(x = reorder(cand_nm, -sum), y=sum)) + geom_bar(stat = "identity") + 
      theme(axis.text.x = element_text(angle = 55, hjust = 1)) + 
      scale_y_continuous(labels = comma) + 
      labs(x='Candidate', 
           y='Recieved donations in USD', 
           title='Donations per candidate from upper class areas')

grid.arrange(p1, p2, p3, nrow = 3, heights = c(10, 0.65, 0.65))

Thanks a lot for your help and best regards, Trgovec

edit:

I have tried using facets as well, but it does not work.

p <- df %>%
  group_by(cand_nm) %>%
  summarise(sum = sum(contb_receipt_amt)) %>%
  arrange(desc(sum)) %>%
   ggplot(aes(x = reorder(cand_nm, -sum), y=sum)) + geom_bar(stat = "identity") + 
    theme(axis.text.x = element_text(angle = 55, hjust = 1)) + 
    scale_y_continuous(labels = comma) + 
    labs(x='Candidate', 
         y='Recieved donations in USD', 
         title='Recieved donations per candidate')

p + facet_grid(. ~ df$Median_household_income)

this is the error:

Error in `$<-.data.frame`(`*tmp*`, "PANEL", value = c(536L, 1279L, 380L,  : 
  replacement has 618217 rows, data has 25

EDIT: here is the reproducable dataset:

> dput(test)
structure(list(cand_nm = structure(c(4L, 4L, 20L, 23L, 1L, 20L, 
19L, 5L, 23L, 1L, 12L, 3L, 19L, 2L, 5L, 8L, 16L, 6L, 12L, 3L, 
4L, 15L, 24L, 22L, 11L, 2L, 17L, 6L, 9L, 17L, 11L, 19L, 8L, 16L, 
22L, 20L, 13L, 24L, 5L, 23L, 15L, 25L, 9L, 14L, 9L, 10L, 21L, 
13L, 1L, 10L, 18L, 12L, 21L, 14L, 2L, 7L, 17L, 16L, 25L, 22L, 
3L, 8L, 15L, 18L, 6L, 24L, 7L, 11L), .Label = c("Bush, Jeb", 
"Carson, Benjamin S.", "Christie, Christopher J.", "Clinton, Hillary Rodham", 
"Cruz, Rafael Edward 'Ted'", "Fiorina, Carly", "Gilmore, James S III", 
"Graham, Lindsey O.", "Huckabee, Mike", "Jindal, Bobby", "Johnson, Gary", 
"Kasich, John R.", "Lessig, Lawrence", "McMullin, Evan", "O'Malley, Martin Joseph", 
"Pataki, George E.", "Paul, Rand", "Perry, James R. (Rick)", 
"Rubio, Marco", "Sanders, Bernard", "Santorum, Richard J.", "Stein, Jill", 
"Trump, Donald J.", "Walker, Scott", "Webb, James Henry Jr."), class = "factor"), 
    economic_area = structure(c(2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 
    3L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 1L, 2L, 2L, 
    2L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 1L, 3L, 3L, 3L, 1L, 2L, 3L, 
    1L, 1L, 3L, 2L, 3L, 2L, 1L, 2L, 2L, 3L, 1L, 3L, 2L, 1L, 3L, 
    3L, 1L, 3L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L
    ), .Label = c("Poorer areas", "Middle income areas", "Upper class areas"
    ), class = "factor"), sum = c(125925526.85, 16410009.07, 
    5622760.67, 4233067.76, 2551429, 1985456.25, 1626777.31, 
    1154448.33, 1104488.41, 860788, 621133.75, 587637, 566709.69, 
    436575.16, 358550.75, 271350.07, 227328.63, 218724.23, 211130.5, 
    211075, 197447.84, 195618, 192773, 191260.1, 167872.43, 161952.1, 
    141996.17, 121297.5, 92806, 80349.55, 70725.29, 66755, 63672, 
    62400, 58971, 48382.4, 48291.56, 44000, 43426.5, 38671.22, 
    37890, 29900, 28964, 21753, 20750, 19626.42, 16655.1, 15980.75, 
    15021, 12550, 12250, 12150, 9900, 8434.5, 6092, 5800, 5450, 
    4425.66, 4050, 2936, 2700, 2700, 2700, 1750, 1000, 1000, 
    600, 575)), row.names = c(NA, -68L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), vars = "cand_nm", drop = TRUE, .Names = c("cand_nm", 
"economic_area", "sum"), indices = list(c(4L, 9L, 48L), c(13L, 
25L, 54L), c(11L, 19L, 60L), c(0L, 1L, 20L), c(7L, 14L, 38L), 
    c(17L, 27L, 64L), c(55L, 66L), c(15L, 32L, 61L), c(28L, 42L, 
    44L), c(45L, 49L), c(24L, 30L, 67L), c(10L, 18L, 51L), c(36L, 
    47L), c(43L, 53L), c(21L, 40L, 62L), c(16L, 33L, 57L), c(26L, 
    29L, 56L), c(50L, 63L), c(6L, 12L, 31L), c(2L, 5L, 35L), 
    c(46L, 52L), c(23L, 34L, 59L), c(3L, 8L, 39L), c(22L, 37L, 
    65L), c(41L, 58L)), group_sizes = c(3L, 3L, 3L, 3L, 3L, 3L, 
2L, 3L, 3L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 
3L, 3L, 2L), biggest_group_size = 3L, labels = structure(list(
    cand_nm = structure(1:25, .Label = c("Bush, Jeb", "Carson, Benjamin S.", 
    "Christie, Christopher J.", "Clinton, Hillary Rodham", "Cruz, Rafael Edward 'Ted'", 
    "Fiorina, Carly", "Gilmore, James S III", "Graham, Lindsey O.", 
    "Huckabee, Mike", "Jindal, Bobby", "Johnson, Gary", "Kasich, John R.", 
    "Lessig, Lawrence", "McMullin, Evan", "O'Malley, Martin Joseph", 
    "Pataki, George E.", "Paul, Rand", "Perry, James R. (Rick)", 
    "Rubio, Marco", "Sanders, Bernard", "Santorum, Richard J.", 
    "Stein, Jill", "Trump, Donald J.", "Walker, Scott", "Webb, James Henry Jr."
    ), class = "factor")), row.names = c(NA, -25L), class = "data.frame", vars = "cand_nm", drop = TRUE, .Names = "cand_nm"))

I would basically like to combine these three graphs into one extended graph grid / page:

1) enter image description here

2) enter image description here

3) enter image description here

Trgovec
  • 555
  • 3
  • 7
  • 16
  • What not facets? – pogibas Dec 09 '17 at 13:17
  • Thanks for replying - please see my edited post. Facets dont work as well. Do you maybe see the reason why? – Trgovec Dec 09 '17 at 14:09
  • In your `grid.arrange` line, you’re setting the first graph to height 10 and the other two to height 0.65. Is this on purpose? – Claus Wilke Dec 09 '17 at 14:21
  • yes, i did it just for this example on the stackoverflow. If i set all 3 to e.g. 5, i will only see the text. Any idea how to extend the whole page? – Trgovec Dec 09 '17 at 14:38
  • 1
    Please provide a data frame we can use to reproduce your problem. See [here](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). I suspect you're simply not making the overall figure large enough, but I can't test without reproducible example. – Claus Wilke Dec 09 '17 at 16:30
  • Thanks for your comment Claus. I have produced the dataset using dput. Does this help? – Trgovec Dec 10 '17 at 17:00
  • Your plotting code doesn't run with the dataset you provided. – Claus Wilke Dec 10 '17 at 17:38

0 Answers0