2017-03-24 2 views
0

J'utilise ggplot pour créer une boîte à moustaches. Le code est le suivant:Limitation de la plage de l'axe y dans un boxplot dans ggplot sans affecter les données sur lesquelles l'boxplot est basée

ggplot(my_data, aes(x = as.factor(viotiko), y = pd_1year, fill = as.factor(viotiko))) + geom_boxplot() + 
    labs(title="Does the PD differ significantly by 'Viotiko' group?",x="Viotiko Group", y = "PD (pd_1year)") 

Cette sortie le graphique suivant:

Boxplot without limits in the y-axis

Ensuite, je voulais me concentrer dans une gamme des valeurs y - [0, 0,05] - et je réexécute le code avec les paramètres modifiés. Je ne voulais pas exclure des données et modifier la moyenne et la distribution, mais simplement me concentrer sur une plage particulière de valeurs y. Le code a été à nouveau ceci:

ggplot(my_data, aes(x = as.factor(viotiko), y = pd_1year, fill = as.factor(viotiko))) + geom_boxplot() + 
    labs(title="Does the PD differ significantly by 'Viotiko' group?",x="Viotiko Group", y = "PD (pd_1year)") + 
    scale_y_continuous(breaks =seq(0, .05, .01), limit = c(0, 0.05)) 

Ce retour un avertissement "Removed 173664 lignes contenant des valeurs non finies (stat_boxplot)." et le graphique ci-dessous en sortie:

Boxplot after setting a limit to the y axis

Apparemment, ggplot modifie en quelque sorte les données d'entrée sur laquelle le boxplot repose. Cependant, mon intention est simplement de me concentrer sur le segment de la boîte à moustaches afin que je puisse examiner de plus près les différences entre les groupes. Comment puis-je faire cela en utilisant ggplot?

Vos conseils seront appréciés.

Répondre

0

Au lieu de votre code scale_y_continuous(), utilisez coord_cartesian() comme suit.

Ce

scale_y_continuous(breaks =seq(0, .05, .01), limit = c(0, 0.05)) 

REMPLACER Cette

coord_cartesian(ylim = c(0,0.05)) 

aussi remarqué que vous essayez de présenter moyenne. Notez que boxplot montre médiane ne signifie pas. Peut-être quelque chose que vous devriez garder à l'esprit pour votre présentation de données. En outre, les BoxPlots sont généralement préférés aux autres options, car ils montrent la distribution des données (par exemple, les valeurs aberrantes) et d'autres statistiques importantes à des fins de comparaison. Recadrage seulement pour montrer médiane, donc peut-être pas une bonne idée, plutôt vous pouvez simplement montrer que la médiane en utilisant geom_point().

+0

Merci. Existe-t-il un moyen de montrer la méchanceté dans le boxplot? – ak7

+0

@ ak7 Vous ne pouvez pas montrer le sens exact avec boxplot. Mais vous pouvez toujours tracer la moyenne comme un point au-dessus de l'exposition de parcelle de boîte, moyenne, médiane et IQRs. Pour ce faire, placez '+ geom_point()' avec votre moyenne en tant qu'esthétique 'y '. –