2017-08-29 6 views
1

J'essaie de faire un terrain avec un caractéris-/facteur Yaxis et mutiple valeurs pour x dans R.Comment créer un graphique avec un caractère yaxis et plusieurs valeurs x? Point Mutiple Cleveland Dot Plot?

essentiellement: le graphique suivant tourné de 90 degrés:

df <- data.frame(A = c(2,3,5,5,2), B = c(1,2,6,6,5)) 
rownames(df) <- c("02", "07", "08", "12", "99") 
matplot(df, pch="x", xaxt = "n") 
axis(side=1,at=1:nrow(df), labels = rownames(df)) 

(pourquoi je voudrais parce que je ne veux pas que mon public cherche des modèles dans la mauvaise direction, ce qui semble se produire avec mes données, et tourner le graphique semble aider.)

Il est très important de noter que les noms sont des codes et doivent être traités comme des caractères/facteurs

Je l'ai déjà essayé, mais aucun de ces travaux:

matplot(df, factor(rownames(df)), pch = "x") 
matplot(df, as.factor(rownames(df)), pch = "x") 
matplot(df, as.character(rownames(df)), pch = "x") 

Est-ce que je soupçonne correctement, que matplot ne peut pas accepter l'entrée caractère/facteur de Yaxis?

J'ai également essayé ggplot, mais j'ai été incapable de lui donner des valeurs mutiples pour x. Aussi, je préférerais une solution sans ajouter de données séparément, car j'ai au moins 15 valeurs pour chaque observation dans mes données d'origine.

ggplot(df, aes(x=df$A, y=rownames(df))) + geom_point(data = df$B) 

peut-être qu'il me manque une solution évidente ici?

un paquet que je ne connais pas encore?

merci!

Répondre

1

Pour ggplot, vous pouvez tracer une couche geom_point séparée pour chaque colonne dans votre ensemble de données (par exemple un pour « A » & un pour « B »), mais il est plus propre à convertir votre trame de données au format longue & d'utilisation cartographie esthétique ggplot:

df$rowname <- rownames(df) 
rownames(df) <- NULL 

ggplot(melt(df), #convert from wide to long format 
     aes(x = rowname, y = value, group = variable, colour = variable)) + 
    geom_point(size = 3) + 
    xlab("") + ylab("") + theme_classic() + 
    coord_flip() 

plot