0
votes

Réorganisation de variables dans le graphique à barres empilés en fonction de la valeur GGPLOT2

mis à jour avec des données d'échantillon: xxx

Ce que j'essaie de faire est de tracer une carte à barres empilée et réorganiser la variable d'élément différemment pour chaque site , tri par la colonne Valeur. Donc, pour chaque site, l'élément avec la plus grande valeur de pourcentage est au bas de la barre empilée, suivi de la valeur de pourcentage la plus importante et ainsi de suite. Cependant, j'ai essayé différentes méthodes et eu de la difficulté à organiser les barres empilées à l'aide de la colonne Valeur.

Modifier avec la solution: Suivez le lien marqué comme réponse ci-dessus, tracez chaque barre individuellement à l'aide de geom_bar et ajoutez la fonction de réorganisation - AES (remplissage = réorganisation (élément, valeur +))


9 commentaires

Bienvenue à! Juste une tête en tête - la fonctionnalité "Snippet" / Code d'exécution ne fonctionnera pas sur le code R (lorsque vous tapez une question sur SO - cela fonctionne pour JS, CSS et HTML je crois).


@LookingForBirds: Avez-vous essayé ceci Stackoverflow.com/questions/51098496/...


Dans l'exemple que vous donnez, il semble que le tri sur une variable est suffisant --- Un ordre cohérent fonctionnera entre les sites, par exemple, A, E, D, B, G, F, C dans une seule réponse. Obtenir la commande d'être différent dans différentes barres (différents sites) est beaucoup plus difficile. Si c'est ce que vous êtes après , je vous recommanderais de fournir des données d'échantillonnage qui le nécessite, par exemple, de faire un substrat un pourcentage le plus élevé sur un seul site et le pourcentage le plus bas de l'autre.


Merci pour les commentaires! @Gregor Je n'essaie pas de le trier en fonction d'un ordre cohérent, mais basé sur les valeurs de pourcentage du substrat, du plus grand au plus petit sur chaque site. Ajoutera quelques données supplémentaires supplémentaires!


Excellent. Je recommanderais Simplifier votre exemple plutôt que de simplement y ajouter, de le rendre très clair. Vous n'avez pas besoin de 7 substrats et de 4 sites pour obtenir ce point à travers --- 3 substrats et 2 ou 3 sites sont nombreux. Assurez-vous simplement qu'il illustre le problème --- Les réponses trier jusqu'à présent implicitement les substrats par le pourcentage médian ( fct_reorder ), le pourcentage moyen réorganiser ou le pourcentage maximal ( Réponse de Hack-R) sur tous les sites. Assurez-vous que vos exemples de données donneraient Différents de commande de substrat pour chaque site depuis que ce que vous voulez.


Avec un peu de piquer, Cela ressemble à une dupe probable ... La solution de glace de glace semble assez bonne.


Vous avez raison, ce que j'essaie, c'est d'obtenir des commandes différentes pour chaque site. Et oui, ce lien semble prometteur, merci, je vais donner une allée!


Je vais fermer cela comme une dupe. Si vous ne pouvez pas le faire fonctionner, modifiez la question pour montrer une tentative, et nous allons re-ouvrir et le comprendre. (Aussi, dans ce cas, je suggérerais à nouveau d'éditer vos échantillons de données à être simple ;)


Merci! réussi à le faire fonctionner :)


3 Réponses :


2
votes

Typiquement, lorsque j'ai besoin de réorganiser une variables de caractère pour afficher, il est facile de convertir la variable en un facteur. Les facteurs sont un peu notoires dans R pour causer des problèmes, mais beaucoup d'entre eux peuvent être facilement surmontés avec l'aide du package FORCATS . En fait, tout le but de l'emballage est de manipuler plus facilement de travailler avec des facteurs dans la fonction R.

la fonction FORCATS :: FCT_REODE est destiné à réorganiser un facteur par une autre variable (basé sur des valeurs médianes par défaut). Dans ce cas particulier, nous convertissons la colonne substrat en un facteur et la réorganisation du facteur Substrate basé sur pourcentage ... tout dans un Un seul appel. xxx

qui donne ce qui suit:

 complot de réorganisation

Je préfère Appelez le fct_reorder appel dans mon ggplot appel, car cela ne nécessitera pas de modification de la trame de données sous-jacente.

Si vous souhaitez en savoir plus sur < Code> forcats , je suggère ce site de teneur en ligne ou si vous voulez apprendre En savoir plus sur les facteurs dans R en général, commencez par le chapitre sur les facteurs dans R pour la science de données .


note

Cette question a depuis changé depuis mon réponse originale. Je crois qu'une réponse adéquate peut être trouvée à la question liée ici


3 commentaires

Merci pour le commentaire! J'ai essayé cela et mes données ne sont que des réorganisations dans un ordre cohérent, mais pas en pourcentage de la valeur. Peut-être que les échantillons que j'ai fournis sont inexacts, j'ai téléchargé mes données réelles qui pourraient être différentes.


Ceci est exactement ce que je cherchais. Pouvez-vous mettre à jour votre réponse avec une brève description du package Forcats ?


@shadow_Dev heureux d'aider! J'ai mis à jour ma réponse pour fournir plus de détails, ainsi que des liens justificatifs



1
votes

Je pense que forcats est un excellent moyen, mais avant que nous ayons cela - ou lorsque vous voulez simplement utiliser la base R sans bibliothèques, Ce est plus de l'approche traditionnelle: xxx

 Entrez la description de l'image ici


1 commentaires

Merci pour le conseil! J'ai essayé cela et mes données ne sont que des réorganisations dans un ordre cohérent, mais pas en pourcentage de la valeur. Peut-être que les échantillons que j'ai fournis sont inexacts, j'ai téléchargé mes données réelles qui pourraient être différentes.



1
votes

Ceci fonctionnera pour vous xxx

à l'aide de la commande de la commande dans l'argument de remplissage.


1 commentaires

Merci pour cela! J'ai essayé cela et mes données ne sont que des réorganisations dans un ordre cohérent, mais pas en pourcentage de la valeur. Peut-être que les échantillons que j'ai fournis sont inexacts, j'ai téléchargé mes données réelles qui pourraient être différentes.