user113156
user113156

Reputation: 7107

rearranging ggplot axis groups in plot

I am trying to rearrange my plot such that it follows the correct confusion matrix structure from the caret package.

For example, I have the following confusion matrix table:

Prediction    0    1
         0 3444  265
         1   98  148

Where the 1 is the bankrupt case and the 0 is the Non-Bankrupt case in my data. I seem to have my data the opposite of what I want it to look like.

Other confusion matrix:

          Reference
Prediction    0    1
         0 3317  313
         1   87  164

          Reference
Prediction    0    1
         0 3079  308
         1   78  182

          Reference
Prediction    0    1
         0 2980  335
         1  106  144

I want to rearrange the plots such at (for the first confusion matrix) the 3444 number and points are in the upper quadrant with the text "Non-Bankrupt" next to it (which is the 0 in the confusion matrix). The 148 should be in the bottom right quadrant. The 265 should be in the upper right quadrant and the 98 should be in the bottom left quadrant. (Just as displayed in the first confusion matrix)

Code:

d %>% 
  ggplot(aes(x = pred_status, y = status, color = correct)) +
  geom_jitter() +
  geom_text(aes(label = n), size = 15, color = "black", family = "serif") +
  facet_wrap(~Model_Name) +
  scale_x_discrete(labels = c("Non-Bankrupt", "Bankrupt")) +
  scale_y_discrete(labels = c("Non-Bankrupt", "Bankrupt"))

Sample of the data:

d <- structure(list(pred_status = structure(c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 
1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 
2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), status = structure(c(1L, 
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), 
    correct = structure(c(1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 
    1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 
    1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Correct", 
    "Incorrect"), class = "factor"), n = c(2980L, 2980L, 313L, 
    3444L, 2980L, 3444L, 3444L, 2980L, 3317L, 2980L, 3317L, 3317L, 
    182L, 3317L, 3079L, 2980L, 3444L, 3444L, 3317L, 3079L, 3079L, 
    144L, 3444L, 3444L, 3079L, 2980L, 2980L, 3444L, 3444L, 3317L, 
    3444L, 3444L, 2980L, 3444L, 3317L, 3079L, 3079L, 3079L, 3444L, 
    2980L, 3317L, 3444L, 3444L, 3317L, 144L, 3079L, 2980L, 2980L, 
    3317L, 3079L, 182L, 335L, 3444L, 3317L, 3444L, 3444L, 3444L, 
    106L, 3079L, 3317L, 3079L, 3079L, 3444L, 3444L, 3079L, 164L, 
    3444L, 2980L, 3079L, 2980L, 3079L, 164L, 3317L, 3317L, 2980L, 
    148L, 313L, 3444L, 3079L, 3317L, 3444L, 3079L, 3444L, 3317L, 
    3444L, 3444L, 3079L, 3444L, 3317L, 3079L, 144L, 3079L, 3317L, 
    3317L, 3079L, 3317L, 3444L, 2980L, 3317L, 2980L, 3444L, 2980L, 
    3079L, 3079L, 3444L, 3444L, 2980L, 3317L, 3317L, 2980L, 3079L, 
    98L, 3079L, 3444L, 3444L, 2980L, 3317L, 3079L, 3444L, 2980L, 
    3079L, 3317L, 144L, 182L, 3317L, 3079L, 2980L, 3079L, 3444L, 
    313L, 2980L, 3317L, 3444L, 3317L, 3317L, 3079L, 2980L, 3444L, 
    182L, 3079L, 3317L, 3444L, 265L, 164L, 335L, 3079L, 2980L, 
    2980L, 3444L, 3079L, 3444L, 2980L, 3317L, 148L, 3444L, 2980L, 
    3079L, 3444L, 3079L, 2980L, 3317L, 3444L, 2980L, 98L, 3317L, 
    78L, 3317L, 2980L, 3079L, 106L, 3079L, 3079L, 3079L, 2980L, 
    2980L, 3317L, 2980L, 3444L, 3444L, 3079L, 2980L, 3444L, 3079L, 
    2980L, 3317L, 3317L, 164L, 308L, 3317L, 3444L, 313L, 3444L, 
    3317L, 3444L, 2980L, 3317L, 3317L, 3444L, 2980L, 3444L), 
    Model_Name = c("4 Year", "4 Year", "2 Year", "1 Year", "4 Year", 
    "1 Year", "1 Year", "4 Year", "2 Year", "4 Year", "2 Year", 
    "2 Year", "3 Year", "2 Year", "3 Year", "4 Year", "1 Year", 
    "1 Year", "2 Year", "3 Year", "3 Year", "4 Year", "1 Year", 
    "1 Year", "3 Year", "4 Year", "4 Year", "1 Year", "1 Year", 
    "2 Year", "1 Year", "1 Year", "4 Year", "1 Year", "2 Year", 
    "3 Year", "3 Year", "3 Year", "1 Year", "4 Year", "2 Year", 
    "1 Year", "1 Year", "2 Year", "4 Year", "3 Year", "4 Year", 
    "4 Year", "2 Year", "3 Year", "3 Year", "4 Year", "1 Year", 
    "2 Year", "1 Year", "1 Year", "1 Year", "4 Year", "3 Year", 
    "2 Year", "3 Year", "3 Year", "1 Year", "1 Year", "3 Year", 
    "2 Year", "1 Year", "4 Year", "3 Year", "4 Year", "3 Year", 
    "2 Year", "2 Year", "2 Year", "4 Year", "1 Year", "2 Year", 
    "1 Year", "3 Year", "2 Year", "1 Year", "3 Year", "1 Year", 
    "2 Year", "1 Year", "1 Year", "3 Year", "1 Year", "2 Year", 
    "3 Year", "4 Year", "3 Year", "2 Year", "2 Year", "3 Year", 
    "2 Year", "1 Year", "4 Year", "2 Year", "4 Year", "1 Year", 
    "4 Year", "3 Year", "3 Year", "1 Year", "1 Year", "4 Year", 
    "2 Year", "2 Year", "4 Year", "3 Year", "1 Year", "3 Year", 
    "1 Year", "1 Year", "4 Year", "2 Year", "3 Year", "1 Year", 
    "4 Year", "3 Year", "2 Year", "4 Year", "3 Year", "2 Year", 
    "3 Year", "4 Year", "3 Year", "1 Year", "2 Year", "4 Year", 
    "2 Year", "1 Year", "2 Year", "2 Year", "3 Year", "4 Year", 
    "1 Year", "3 Year", "3 Year", "2 Year", "1 Year", "1 Year", 
    "2 Year", "4 Year", "3 Year", "4 Year", "4 Year", "1 Year", 
    "3 Year", "1 Year", "4 Year", "2 Year", "1 Year", "1 Year", 
    "4 Year", "3 Year", "1 Year", "3 Year", "4 Year", "2 Year", 
    "1 Year", "4 Year", "1 Year", "2 Year", "3 Year", "2 Year", 
    "4 Year", "3 Year", "4 Year", "3 Year", "3 Year", "3 Year", 
    "4 Year", "4 Year", "2 Year", "4 Year", "1 Year", "1 Year", 
    "3 Year", "4 Year", "1 Year", "3 Year", "4 Year", "2 Year", 
    "2 Year", "2 Year", "3 Year", "2 Year", "1 Year", "2 Year", 
    "1 Year", "2 Year", "1 Year", "4 Year", "2 Year", "2 Year", 
    "1 Year", "4 Year", "1 Year")), row.names = c(NA, -200L), class = c("tbl_df", 
"tbl", "data.frame"))

Upvotes: 1

Views: 48

Answers (1)

dario
dario

Reputation: 6485

I tried and came up with this minor changes:

    library(tidyverse)
    d %>% 
        ggplot(aes(x = status, y = fct_rev(pred_status), color = correct)) +
        geom_jitter() +
        geom_text(aes(label = n), size = 15, color = "black", family = "serif") +
        facet_wrap(~Model_Name) +
        scale_x_discrete(labels = c("Non-Bankrupt", "Bankrupt")) +
        scale_y_discrete(labels = c("Bankrupt", "Non-Bankrupt"))

Which gives me this figure:

enter image description here

Not 100% sure if the labels are correct now?è

Upvotes: 2

Related Questions