2015-04-30 4 views
2

J'ai deux ensembles de données qui ont besoin de tracer sur le même graphique. Un ensemble est très grand (~ 10⁶) et je veux tracer avec hexbin, et l'autre ensemble est très petit (~ 10) et je veux tracer les points. Comment puis-je tracer des points sur l'hexbin? Le plus proche de succès que je suis arrivé était le suivant:Comment tracer des points sur un graphe hexbin dans R?

bin = hexbin(x, y) 
plot(bin) 
pushViewport(dataViewport(x, y)) 
grid.points(x, y) 

J'apprécie toute aide :)

+0

Avez-vous essayé 'des points (bin)' au lieu de 'plot()'? – Molx

+0

@molx, j'ai essayé des points (bin) mais ça n'a pas fonctionné pour moi. –

+0

Je viens de me rendre compte que ça ne devrait pas vraiment marcher, j'ai pensé que 'hexbin()' a créé un complot, mais ce n'est pas le cas. – Molx

Répondre

3

En supposant que vous utilisez le package hexbin ...

library(hexbin) 
library(grid) 

# some data from the ?hexbin help 
set.seed(101) 
x <- rnorm(10000) 
y <- rnorm(10000) 
z <- w <- -3:3 

# hexbin 
bin <- hexbin(x, y) 

# plot - look at str(p) 
p <- plot(bin) 

# push plot viewport 
pushHexport(p$plot.vp) 

# add points 
grid.points(z, w, pch=16, gp=gpar(col="red")) 

upViewport() 

enter image description here

+1

Merci, cela semble fonctionner pour moi. –

+0

Bonnes choses, vous êtes les bienvenus. – user20650

+0

Salut, combien de temps. Moi encore ... Vous savez comment faire cela en utilisant simplement la commande 'hexbinplot'? Maintenant, je dois être avec cette commande. J'ai tout essayé et j'ai échoué. –

1

Vous pouvez utiliser le package ggplot pour cette tâche, voir le code ci-dessous, il suffit de remplacer le data.frame utilisé dans le paramètre de données pour geom_point avec celui pour les points que vous voulez tracer.

library(ggplot2) 
library(hexbin) 
ggplot(diamonds, aes(carat, price)) + stat_binhex() + geom_point(data = diamonds[c(1,10,100,1000), ], aes(carat, price), size=10, color = 'red') 
+0

Merci, je vais essayer. –

1

Essayez ceci ... il devrait fonctionner correctement. Il suffit de créer un panel.function au sein de votre fonction hexbinplot:

hexbinplot(d.frame$X ~ d.frame$Y 
    ,aspect=...,cex.title=... 
    ,panel=function(x, y, ...){ 
     panel.hexbinplot(x,y,...) 
    # panel.curve(...)  # optional stuff 
    # panel.text(...)   # optional stuff 
     panel.points(x=c(25,50),y=c(100,150),pch=20,cex=3.2) 
    } 
) 

un coup d'oeil par exemple à: How to add points to multi-panel Lattice graphics bwplot?

+0

Merci, @Manuel F.: D –

+0

Veuillez ne pas poster de liens morts ou susceptibles de mourir. – Frank