2017-04-18 4 views
1

Je voudrais lisser les bords de mon graphique ici. Y at-il un moyen d'obtenir geom_density2d et/ou stat_density2d d'interpoler un peu différemment pour supprimer ces discontinuités apparentes?Nettoyage des tracés de densité dans R

enter image description here

J'ai utilisé cette option pour créer l'exemple inclus:

ggplot(data = PlotModel1, aes(x = Lon, y = Lat)) + 
    geom_point(aes(color = Conc), shape = "") + 
    stat_density2d(aes(fill = ..level..), n = 100, geom="polygon", contour = TRUE) + 
    guides(fill = FALSE) + 
    theme_bw() 

Je voudrais un terrain plus lisse comme celui-ci enter image description here

Merci!

+1

S'il vous plaît peut vous incluez des données pour que votre problème puisse être reproduit –

Répondre

0

répond à cette question ici: non-overlapping polygons in ggplot density2d

Fondamentalement, vous pouvez étendre les x, les limites y pour permettre aux polygones à tirer pleinement.

Ensuite, si cela fait l'intrigue trop zoomée, vous définissez des limites avec coord_cartesian:

r stat_contour incorrect fill with polygon

Alors, pour votre code, ce sera quelque chose comme:

ggplot(data = PlotModel1, aes(x = Lon, y = Lat)) + 
    geom_point(aes(color = Conc), shape = "") + 
    stat_density2d(aes(fill = ..level..), n = 100, geom="polygon", contour = TRUE)+ 
    guides(fill = FALSE) + 
    theme_bw()+ 
    xlim(-150, -50)+ 
    ylim(30, 45)+ 
    coord_cartesian(xlim=c(-110, -80),ylim=c(33, 41))