2016-10-26 4 views
0

Je vais essayer d'expliquer mon problème en utilisant un code modifié d'ici: https://stats.stackexchange.com/questions/22805/how-to-draw-neat-polygons-around-scatterplot-regions-in-ggplot2Comment combiner les parcelles de ggplot2 et boxplotdou?

Dans mon exemple, j'utilise l'ensemble de données Iris.

Mes tentatives ont produit ce jusqu'à présent:

boxplotdbl not in fight position

Mon but est de tracer la Double Box Terrain (boxplotdou) sur le diagramme de dispersion décortiqué - avec les mêmes dimensions. Le code actuel est:

library(ggplot2) 
    library(boxplotdbl) 
    df <- iris 
    find_hull <- function(df) df[chull(df$Sepal.Length, df$Sepal.Width), ] 
    hulls <- ddply(df, "Species", find_hull) 

    plot <- ggplot(data = df, aes(x = Sepal.Length, y = Sepal.Width, colour=Species, fill = Species)) + 
     geom_point() + 
     geom_polygon(data = hulls, alpha = 0.5) + 
     labs(x = "Sepal.Length", y = "Sepal.Width") 
    plot 

    par(new = TRUE) 
    # This is quite close what I'm trying to achieve, without axes. But it is in wrong position 
    #boxplotdou(Sepal.Length~Species, iris, Sepal.Width~Species, iris, factor.labels=FALSE, draw.legend=FALSE, name.on.axis=FALSE, ann = FALSE, axes = FALSE) 
    # This shows the axes, which do not match the underlying plot 
    boxplotdou(Sepal.Length~Species, iris, Sepal.Width~Species, iris, factor.labels=FALSE, draw.legend=FALSE, name.on.axis=FALSE, ann = FALSE) 

J'ai essayé d'insérer le boxplotdou (... au sein ggplot() mais je suis une erreur:. « Je ne sais pas comment ajouter o à une parcelle »

toute aide serait appréciée.

-Kari

+0

Veuillez ne pas faire ceci. – tchakravarty

+0

Je vais essayer de tout faire dans ggplot2. Vous devez créer une deuxième zone de données dans laquelle vous calculez les valeurs des valeurs supérieures et inférieures des barres et des zones de boîte à moustache. Tracez ensuite les boîtes avec geom_rect. Les barres peuvent être tracées avec geom_errorbar. Peut-être besoin de geom_errorbarh à partir du paquet ggstance. https://github.com/lionel-/ggstance – timcdlucas

Répondre

0
par(mar=c(2.850, 3.20, 1.30, 7.40)) 

après avoir mis cela après votre par (nouveau = TRUE), je suis une bonne superposition. enter image description here Le se magins peut dépendre de l'environnement graphique. Je crois que les coordonnées sont incompatibles entre ggplot2 et les graphes de base dans R. Donc, vous devez ajuster cela manuellement, si vous voulez utiliser les deux dans une même image. Et le paquet boxplotdbl est pour les graphiques de base, pas pour le ggplot2.