2015-11-10 1 views
0

J'ai cette trame de données avec 30 colonnes, dont la première a des valeurs positives, les suivantes négatives et ainsi de suite. Je veux faire un graphique à barres horizontales comparant chacune de ces colonnes par paires (une positive avec une négative).Tracer des graphiques horizontaux avec des valeurs positives et négatives sur le barplot()

données Reproductible:

x = 0:600 
y = 0:-600 

col1<- sample(x, 40) 
col1 
col2<- sample(y, 40) 
col2 

df = as.data.frame(rep(data.frame(col1, col2), 15)) 
df 

final.data<-colMeans(df, na.rm=T) 
final.data 

Lorsque je tente cette commande:

barplot(final.data, 
    horiz=TRUE, 
    xlim=c(-500,500), 
    xlab="average time (seconds)", 
    axisnames=FALSE) 

je reçois quelque chose de similaire à:

enter image description here

Ma question principale est:

  1. Comment faire pour que les barres horizontales que je veux comparer soient l'une à côté de l'autre et pas légèrement vers le bas?

Une autre question connexe que je ne pouvais pas trouver la réponse à:

  1. Comment puis-je ajouter un * devant les traitements que j'ai vu de différence significative?
+0

S'il vous plaît donner un exemple de 'data'. – Roland

+0

Veuillez fournir des données reproductibles. Vous avez un dataframe avec une seule ligne? Vous ne pouvez même pas utiliser un data.frame dans 'barplot'. Si c'était une matrice avec plus d'une rangée, il y aurait aussi des barres empilées. – Molx

+0

J'ai oublié de mentionner que je fais une moyenne de chaque colonne et que j'utilise ce résultat pour tracer le graphique! –

Répondre

3

Peut-être que vous devriez simplement ajouter un groupe à la fois:

dat <- as.vector(replicate(15, c(sample(-100:10, 1), sample(1:100, 1)))) 

barplot(dat[seq(1, 29, 2)], xlim = c(-100, 100), horiz = TRUE, col = "red") 
barplot(dat[seq(2, 30, 2)], horiz = TRUE, add = TRUE, col = "blue") 

enter image description here

+0

qui a parfaitement fonctionné! Merci! Quelques autres questions ... Comment puis-je supprimer les marques négatives de l'axe? Comment puis-je ajouter le nom du traitement devant chaque colonne? –

+0

Ce sont des questions spécifiques, mais vous trouverez les réponses ici sur stackoverflow. Vérifiez les arguments de 'par' et aussi la fonction' text'. – Molx