2010-09-12 4 views
1

alt text Bonjour à tous, j'ai les données en fusion suivantes:Comment dessiner seulement une plage de valeurs dans geom_point à partir du paquetage ggplot2?

X  variable  value  
1 StationA SAR11.cluster 0.001309292 
2 StationB SAR11.cluster 0.002712237 
3 StationC SAR11.cluster 0.002362708 
4 StationD SAR11.cluster 0.002516751 
5 StationE SAR11.cluster 0.004301075 
6 StationF SAR11.cluster 0.0 

. 
. 
. 
etc. 
etc. 

J'ai utilisé le code suivant pour tracer une BubbleChart des données:

ggplot(foomelt, aes(x=foomelt$Station, y=variable, angle=45, size=(value))) + 
+geom_point() + opts(theme_bw(), axis.text.x = theme_text(size=10, angle = 70)) 
+ scale_area() 

Tout est bien sauf que je veux ignorer les valeurs 0 (zéro) et utiliser uniquement pour la mise à l'échelle des valeurs de points entre tous ceux qui sont plus rer que les zéros et la valeur max. Je ne souhaite pas supprimer les lignes de valeurs nulles des données car, pour prouver un point, je souhaite que toutes les stations et variables soient incluses et que celles qui ont la valeur zéro soient laissées vides.

j'ai réussi à l'utiliser pour ignorer les valeurs zéro mais mise à l'échelle ne fonctionne pas:

ggplot(foomelt, aes(x=foomelt$Station, y=variable, angle=45, size=(value>0))) + 
    + geom_point() + opts(theme_bw(), axis.text.x = theme_text(size=10, angle = 70)) 
    + scale_area("Ratio") + scale_size_identity() 

toute aide serait grandement appréciée.

Répondre

7

Je ne sais pas si c'est ce que vous cherchez, mais une approche d'ignorer les valeurs zéro en plaçant les points est de modifier votre déclaration geom_point() pour

geom_point(subset = .(value > 0)) 

cette ligne ne laisse passer que la valeurs non nulles dans la trame de données à tracer.

+0

a marché! Merci. –

+0

@ Schrodinger'sCat Veuillez accepter cette réponse! – plaes

+0

Comment utiliseriez-vous cette fonction de sous-ensemble pour les valeurs non numériques telles que les animaux de colonne où l'entrée de ligne est chien. – KLDavenport

-1

Juste pour montrer comment je suggestions de Ramnath (pour ainsi aider les novices comme moi) (thanks!):

foo= read.csv('~/Desktop/foo.csv', header=T) 
foomelt = melt(foo) 
foomelt$Station<-factor(foomelt$Station, levels=unique(as.character(foo[[1]]))) #to keep the order of the x axis the same 
                       # as in the original file` 
bigfoo <- subset(foomelt, value > 0) #use only those values that are larger than 0 
ggplot(bigfoo, aes(x=bigfoo$Station, y=variable, angle=45, size=(value))) + geom_point() 
+ opts(theme_bw(), axis.text.x = theme_text(size=9, angle = 90)) + scale_area() 
Questions connexes