2015-03-15 1 views
0

J'ai le code R suivant qui visualise un graphe multiligne où chaque ligne correspond à une catégorie de données. Dans le code, les catégories sont données mon nk variable: Mon jeu de données ressemble à ceci:Comment visualiser un graphique multiligne dans R?

k precision recall 
0.25 0.02 1.011 
0.25 0.04 1.011 
0.5 0.15 0.941 
0.5 0.17 0.931 
0.5 0.18 0.921 
0.5 0.19 0.911 
1.0 0.36 0.831 
1.0 0.39 0.811 
1.0 0.41 0.801 

Le problème est qu'il permet de visualiser uniquement les lignes pour k = 1,0 et non les lignes pour k = 0,5 et 0,25 Ma question est ? Comment puis-je utiliser une variable nk qui n'est pas un entier afin de visualiser les lignes pour k = 0.5 ou 0.25?

dtf$k <- as.numeric(dtf$k) 
nk <- max(dtf$k) 
xrange <- range(dtf$precision) 
yrange <- range(dtf$recall) 
plot(xrange, yrange, 
type="n", 
xlab="Precision", 
ylab="Recall" 
) 
colors <- rainbow(nk) 
linetype <- c(1:nk) 
plotchar <- seq(18, 18+nk, 1) 
for (i in 1:nk) { 
Ki <- subset(dtf, k==i) 
lines(Ki$precision, Ki$recall, 
type="b", 
lwd=2, 
lty=linetype[i], 
col=colors[i], 
pch=plotchar[i] 
) 
} 
title("Methods varying K", "Precision Recall") 
legend(xrange[1], yrange[2], 
1:nk, 
cex=1.0, 
col=colors, 
inset=c(-0.2,0), 
pch=plotchar, 
lty=linetype, 
title="k" 
) 

Répondre

1

données

dtf <- read.table(header = TRUE, text = 'k precision recall 
0.25 0.02 1.011 
0.25 0.04 1.011 
0.5 0.15 0.941 
0.5 0.17 0.931 
0.5 0.18 0.921 
0.5 0.19 0.911 
1.0 0.36 0.831 
1.0 0.39 0.811 
1.0 0.41 0.801') 
dtf$k <- factor(dtf$k) 

solution ggplot2

require(ggplot2) 
ggplot(dtf, aes(x = precision, y = recall, col = k)) + 
    geom_line() 

solution de base

plot(recall ~ precision, data = dtf, type = 'n') 
cols = c('red', 'blue', 'green') 
levs <- levels(df$k) 
for(i in seq_along(levs)){ 
    take <- df[df$k == levs[i], ] 
    lines(take$precision, take$recall, col = cols[i]) 
} 
+0

Merci pour la réponse, mais il me donne une erreur quand j'appelle la fonction ggplot pour concevoir la ligne. L'erreur est celle-ci: Erreur dans withCallingHandlers (tryCatch (evalq ((function (i): oggetto ".rcpp_warning_recorder" non trovato – AlketCecaj

+0

Avec mes données d'exemple ?! Ou avec vos données actuelles? – EDi

+0

Avec vos exemples de données .. – AlketCecaj