2017-07-22 3 views
0

Je travaille sur une recherche sur l'abus sexuel d'enfants. Pour cela, je veux préparer un graphique à barres en cluster en utilisant lattice. J'ai utilisé le code suivant.treillis: Barchart en cluster: trier les barres et afficher les valeurs au-dessus des barres

Mes données:

nature <- read.table(text = "Nature_of_sexual_abuse, Familiarity_with_the_perpetrator, Count 
        Talked in a sexual way, Not familiar at all, 21 
        Talked in a sexual way, Not very familiar, 22 
        Talked in a sexual way, Very familiar, 22 
        Shown pornography, Not familiar at all, 6 
        Shown pornography, Not very familiar, 17 
        Shown pornography, Very familiar, 16 
        Looked at private parts, Not familiar at all, 16 
        Looked at private parts, Not very familiar, 14 
        Looked at private parts, Very familiar, 10 
        Touched private parts, Not familiar at all, 6 
        Touched private parts, Not very familiar, 15 
        Touched private parts, Very familiar, 11 
        Made a sex video, Not familiar at all, 1 
        Made a sex video, Not very familiar, 6 
        Made a sex video, Very familiar, 7 
        Forced sex behaviors, Not familiar at all, 5 
        Forced sex behaviors, Not very familiar, 17 
        Forced sex behaviors, Very familiar, 10", 
        header = TRUE, 
        sep = ",", strip.white = TRUE) 

Mon terrain:

library(lattice) 

colors = c("lightsalmon3", "lightgoldenrod2", "cadetblue4") 

barchart(
    data = nature, 
    origin = 0, 
    Count ~ Nature_of_sexual_abuse, 
    groups = Familiarity_with_the_perpetrator, 
    xlab = list (
    label = "Nature of sexual abuse", 
    font = 2, 
    cex = 1), 
    ylab= list (
    label = "Number of students", 
    font = 2, 
    cex = 1), 
    ylim=c(0,25), 
    labels = TRUE, 
    auto.key = list(space="top", columns= 3), 
    par.settings = list(superpose.polygon = list(col = colors)))  

Le tableau ressemble actuellement à ceci:

enter image description here

Cependant, je le veux trier dans ce qui suit ordre de Nature_of_sexual_abuse variable: "Fait une vidéo de sexe", "Sexe forcé être haviors "," regardé des parties intimes "," parties privées touchées "," Shown pornography "et" a parlé d'une manière sexuelle ".

Dans chaque grappe, le graphe doit être trié dans l'ordre de Familiarity_with_the_perpetrator variable: "Très familier", "Pas très familier" et "Pas du tout familier".

J'ai essayé d'alimenter les données dans l'ordre où je veux qu'elles soient affichées. Mais, il semble que lattice trie automatiquement les groupes par ordre alphabétique. Je veux aussi que les valeurs de chaque barre apparaissent en haut des mesures. Quelqu'un peut-il m'aider s'il vous plaît à le regrouper dans l'ordre que je veux?

Comme vous pouvez le voir, je suis un débutant à R. Donc, toute aide sera grandement appréciée. sont des facteurs qui sont variables

+1

Pour les comptes, avez-vous essayé la solution donnée sur le lien [dans les commentaires] (https://stackoverflow.com/questions/45222720/r-lattice-how-to-remove-white-space-between- bars-and-x-axis # comment77414934_45222720) à votre question précédente. Si vous l'avez fait et que cela n'a pas fonctionné, pouvez-vous le montrer dans votre question et indiquer pourquoi cela n'a pas fonctionné? – user20650

Répondre

1

Vos colonnes Nature_of_sexual_abuse et Familiarity_with_the_perpetrator. Les données de type factor ont toujours des niveaux dans R qui sont les valeurs de caractères uniques existant dans vos données. Ces valeurs de niveau sont utilisées comme étiquettes lorsque vous tracez les données.

Par exemple, dans vos données les niveaux de la colonne Nature_of_sexual_abuse ont les valeurs uniques « une vidéo de sexe », « comportements sexuels forcés », « Regarda parties privées », « parties privées Touché », « Montré la pornographie "et" a parlé d'une manière sexuelle ".

Si vous souhaitez réorganiser vos données dans le tracé, vous devez réorganiser les valeurs de niveau de vos données catégorielles. Insérer cette réordonnancement avant de créer l'intrigue et il devrait fonctionner:

library(lattice) 


nature <- read.table(text = "Nature_of_sexual_abuse, 
Familiarity_with_the_perpetrator, Count 
       Talked in a sexual way, Not familiar at all, 21 
       Talked in a sexual way, Not very familiar, 22 
       Talked in a sexual way, Very familiar, 22 
       Shown pornography, Not familiar at all, 6 
       Shown pornography, Not very familiar, 17 
       Shown pornography, Very familiar, 16 
       Looked at private parts, Not familiar at all, 16 
       Looked at private parts, Not very familiar, 14 
       Looked at private parts, Very familiar, 10 
       Touched private parts, Not familiar at all, 6 
       Touched private parts, Not very familiar, 15 
       Touched private parts, Very familiar, 11 
       Made a sex video, Not familiar at all, 1 
       Made a sex video, Not very familiar, 6 
       Made a sex video, Very familiar, 7 
       Forced sex behaviors, Not familiar at all, 5 
       Forced sex behaviors, Not very familiar, 17 
       Forced sex behaviors, Very familiar, 10", 
       header = TRUE, 
       sep = ",", strip.white = TRUE) 




nature$Nature_of_sexual_abuse <- factor(nature$Nature_of_sexual_abuse, 
            levels=c("Made a sex video", 
              "Forced sex behaviors", 
              "Looked at private parts", 
              "Touched private parts", 
              "Shown pornography", 
              "Talked in a sexual way")) 
nature$Familiarity_with_the_perpetrator <- 
factor(nature$Familiarity_with_the_perpetrator, levels=c("Very familiar", 
"Not very familiar","Not familiar at all")) 



colors = c("lightsalmon3", "lightgoldenrod2", "cadetblue4") 

barchart( data = nature, 
     origin = 0, 
     Count ~ Nature_of_sexual_abuse, 
     groups = Familiarity_with_the_perpetrator, 
     xlab = list (label = "Nature of sexual abuse", 
        font = 2, cex = 1), 
     ylab= list (label = "Number of students", 
        font = 2, cex = 1), 
     ylim=c(0,25), 
     labels = TRUE, 
     auto.key = list(space="top", columns= 3), 
     par.settings = list(superpose.polygon = list(col = colors)) 
     ) 

En fonction de l'ordre de votre niveau, l'ordre de vos données dans le terrain va changer. J'espère que cela vous aidera sur la question de la commande de vos données.

+0

merci. J'ai essayé avec le code que vous avez fourni avant d'exécuter la fonction 'barchart'. Mais, cela n'a pas aidé. Le graphique apparaît complètement vide. –

+0

Lorsque je lance le code, cela fonctionne parfaitement.1) Assurez-vous que vous avez chargé votre paquet correctement 2) Créez dataframe _nature_ avec vos données 3) Réorganiser les niveaux de facteur avec le code que j'ai fourni ci-dessus 4) Créer des couleurs variables 5) Créer un graphique à barres – Elena

+0

@WhiteClubs; avant d'exécuter le réordonnancement d'Elena (qui fonctionne) jetez un oeil à 'nature $ Familiarity_with_the_perpetrator', vous pouvez avoir des espaces blancs, donc le vecteur des niveaux ne correspondra pas à la variable. Si oui, supprimez l'espace blanc (c'est pourquoi j'ai ajouté le strip.white argumetn dans read.table) – user20650