2016-06-18 16 views
6

Ich habe zwei Verwirrung Matrizen mit berechneten Werten wie richtig positiv (tp), falsch positive (fp), richtig negative (tn) und falsch negative (fn), entsprechend zwei verschiedenen Methoden. Ich möchte sie als enter image description herePlot Konfusion Matrix in R mit ggplot

Ich glaube Facettengitter oder Facettenverpackung kann dies tun, aber ich finde schwierig zu starten. Hier sind die Daten von zwei Verwirrung Matrizen entsprechend Method1 und method2

dframe<-structure(list(label = structure(c(4L, 2L, 1L, 3L, 4L, 2L, 1L, 
3L), .Label = c("fn", "fp", "tn", "tp"), class = "factor"), value = c(9, 
0, 3, 1716, 6, 3, 6, 1713), method = structure(c(1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L), .Label = c("method1", "method2"), class = "factor")), .Names = c("label", 
"value", "method"), row.names = c(NA, -8L), class = "data.frame") 

Antwort

9

Dies könnte ein guter Anfang sein

library(ggplot2) 
ggplot(data = dframe, mapping = aes(x = label, y = method)) + 
    geom_tile(aes(fill = value), colour = "white") + 
    geom_text(aes(label = sprintf("%1.0f",value)), vjust = 1) + 
    scale_fill_gradient(low = "white", high = "steelblue") 

Herausgegeben

TClass <- factor(c(0, 0, 1, 1)) 
PClass <- factor(c(0, 1, 0, 1)) 
Y  <- c(2816, 248, 34, 235) 
df <- data.frame(TClass, PClass, Y) 

library(ggplot2) 
ggplot(data = df, mapping = aes(x = TClass, y = PClass)) + 
    geom_tile(aes(fill = Y), colour = "white") + 
    geom_text(aes(label = sprintf("%1.0f", Y)), vjust = 1) + 
    scale_fill_gradient(low = "blue", high = "red") + 
    theme_bw() + theme(legend.position = "none") 

enter image description here

0

A etwas modularere Lösung basierend auf der Antwort von MYaseen208. Könnte für große Datensätze/multinomiale Klassifizierung effektiver sein: