2016-09-21 1 views
0

J'ai donc fait un Barplot empilé avec l'aide de @Axeman. Jusqu'ici tout va bien .. Maintenant, j'aimerais échanger l'intrigue bleue avec l'intrigue rouge. J'ai littéralement tout essayé en utilisant la fonction de commande dans ggplot et je ne peux pas le faire correctement. Voici le terrain:Rstudio réordonné empilé ggplot geom_bar

Stacked barplot

Ci-dessous, vous trouverez un extrait du dataframe qui a été utilisé pour cette parcelle (première rangée containts l'en-tête). Fondamentalement, son nom de division, suivi de deux types d'épargne (répétitifs et MDF) et la dernière colonne contient la somme des deux (NewRepetitive + Anrechenbare_MDF)

"DivisionName", "NewRepetitive", "Anrechenbare_MDF", "Total_CR" 
    "Electrification Products" 0 0 0 
    "Electrification Products" 39.762 0 39.762 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 1641.348852 0 1641.348852 
    "Electrification Products" 6367.725252 0 6367.725252 
    "Electrification Products" 24299.24741 0 24299.24741 
    "Electrification Products" 32910.87486 0 32910.87486 
    "Electrification Products" 8637.313704 0 8637.313704 
    "Electrification Products" 9220.489704 0 9220.489704 
    "Electrification Products" -1038.609948 0 -1038.609948 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 6346.518852 0 6346.518852 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 4675.189452 0 4675.189452 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 0 0 0 
    "Electrification Products" 8495.893524 0 8495.893524 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 2439.849336 0 2439.849336 
    "Power Grids" 0 0 0 
    "Power Grids" -3909.837222 0 -3909.837222 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" -974.473842 0 -974.473842 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" -448.740678 0 -448.740678 
    "Power Grids" -886.997442 0 -886.997442 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 263.767854 0 263.767854 
    "Power Grids" -28.4961 0 -28.4961 
    "Power Grids" 122.00307 0 122.00307 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 3910.778256 0 3910.778256 
    "Power Grids" 0 0 0 
    "Power Grids" -1246.87005 0 -1246.87005 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" -61.047924 0 -61.047924 
    "Power Grids" -61.047924 0 -61.047924 
    "Power Grids" 0 0 0 
    "Power Grids" -6.348666 0 -6.348666 
    "Power Grids" -12.697332 0 -12.697332 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" -240.798672 0 -240.798672 
    "Power Grids" 0 0 0 
    "Power Grids" -65.395236 0 -65.395236 
    "Power Grids" 24.678948 0 24.678948 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 0 0 0 
    "Power Grids" 215.669088 0 215.669088 
    "Power Grids" -61.047924 0 -61.047924 
    "Power Grids" 14.605908 0 14.605908 
    "Power Grids" -42.61161 0 -42.61161 
    "Power Grids" -553.540056 0 -553.540056 
    "Power Grids" 0 0 0 
    "Power Grids" 113.507256 0 113.507256 
    "Power Grids" -21.365448 0 -21.365448 
    "Power Grids" 0 0 0 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 603.25581 0 603.25581 
    "Power Grids" -61.047924 0 -61.047924 
    "Power Grids" 0 0 0 
    "Power Grids" -224.429982 0 -224.429982 
    "Power Grids" 0 0 0 
    "Power Grids" 44.904552 0 44.904552 
    "Power Grids" -240.798672 0 -240.798672 
    "Power Grids" 0 0 0 
    "Power Grids" -361.198008 0 -361.198008 
    "Power Grids" 0 0 0 
    "Power Grids" -240.798672 0 -240.798672 
    "Power Grids" -115.349562 0 -115.349562 
    "Power Grids" 0 0 0 
    "Power Grids" 263.767854 0 263.767854 
    "Power Grids" -1948.93443 0 -1948.93443 
    "Power Grids" 16.36869 0 16.36869 
    "Power Grids" 111.280584 0 111.280584 
    "Power Grids" 924.254436 0 924.254436 
    "Power Grids" -1122.136656 0 -1122.136656 
    "Power Grids" 0 0 0 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 5.977554 0 5.977554 
    "Power Grids" 0 0 0 
    "Electrification Products" 5542.133592 -559.362777 4982.770815 
    "Electrification Products" 3038.638548 -260.690669 2777.947879 
    "Electrification Products" 2507.378466 -279.681388 2227.697078 
    "Electrification Products" -2241.940608 -334.661491 -2576.602099 
    "Electrification Products" -4535.744118 -931.275287 -5467.019405 
    "Electrification Products" 808.003602 -156.175362 651.82824 
    "Electrification Products" 958.873884 -209.163422 749.710462 
    "Electrification Products" -830.588418 -144.621569 -975.209987 
    "Electrification Products" -999.404616 -184.794228 -1184.198844 
    "Electrification Products" 342.112248 -225.099694 117.012554 
    "Electrification Products" -237.193584 -92.629517 -329.823101 
    "Electrification Products" 238.572 -236.653473 1.918527 
    "Electrification Products" 145.674714 -71.925657 73.749057 
    "Electrification Products" 0 -40.637464 -40.637464 
    "Electrification Products" -437.382 -111.553826 -548.935826 
    "Electrification Products" 1852.074198 -643.426551 1208.647647 
    "Electrification Products" 1318.680222 -290.106352 1028.57387 
    "Electrification Products" 395.89698 -81.009327 314.887653 
    "Electrification Products" 314.106546 -118.725138 195.381408 
    "Electrification Products" -711.580752 -277.88855 -989.469302 
    "Electrification Products" -897.22953 -196.215213 -1093.444743 
    "Electrification Products" 228.074832 -150.066454 78.008378 
    "Electrification Products" -657.517686 -188.844696 -846.362382 
    "Electrification Products" -986.269902 -283.267038 -1269.53694 
    "Electrification Products" -474.638994 -99.203216 -573.84221 
    "Electrification Products" -711.951864 -148.804831 -860.756695 
    "Electrification Products" 286.577988 -66.863233 219.714755 

Voici le R-Code qui a été utilisé pour modifier la dataframe dans le bon sens (en utilisant le paquet tidyr), donc je pourrais faire le barplot empilé, puisque ggplot a besoin des données sous une forme spécifique.

library(ggplot2) 
    library(tidyr) 

    pd <- gather(stack, 'key', 'value', -DivisionName) 
    pd <- pd[pd$key != 'Total_CR', ] 

Et enfin le code ggplot:

ggplot(pd, aes(DivisionName, value, fill = key)) + 
    geom_bar(stat = "summary", fun.y = "sum") + 
    scale_fill_discrete(name="Saving-Typen",labels=c("MDF-Savings","Repetitive Savings")) + 
    ylab("Total Savings") + scale_y_continuous(breaks=c(seq(0,15000000,1000000)), expand = c(0,0)) 

Le barplot regarde exactement comment je veux qu'il, à l'exception de l'ordre .. je dois avoir les économies MDF au-dessus de l'épargne-Répétitif. Je suis assis ici pendant 5 heures et je n'arrive pas à trouver la bonne solution. J'ai tout essayé avec l'option "commander".

Quelqu'un peut-il m'aider?

+1

Veuillez utiliser 'dput()' pour partager des données comme celles-ci dans la balise R. Il est plus facilement reproductible et inclut des métadonnées telles que vos classes de colonnes. –

Répondre

0

Le problème ne se trouve pas dans le code de votre tracé, mais dans le bloc de données pd. Vous avez pd$key comme un vecteur de caractères au lieu d'un facteur. Convertissez ceci en un facteur avec la bonne commande, et ggplot fera le reste pour vous.

Après

pd <- gather(stack, 'key', 'value', -DivisionName) 
pd <- pd[pd$key != 'Total_CR', ] 

vous faites:

pd$key <- factor(pd$key, 
       levels = c("NewRepetitive", 
          "Anrechenbare_MDF")) 

Ne pas oublier de changer à nouveau vos étiquettes pour faire correspondre les valeurs correctes.

ggplot(pd, aes(DivisionName, abs(value), fill = key)) + 
    geom_bar(stat = "summary", fun.y = "sum") + 
    scale_fill_discrete(name="Saving-Typen",labels=c("Repetitive Savings","MDF_Savings")) + 
    ylab("Total Savings") + scale_y_continuous(breaks=c(seq(0,15000000,1000000)), expand = c(0,0)) 

donne

enter image description here

Notez que je devais utiliser abs(value) en raison de votre ensemble de données exemple louches. S'il vous plaît jeter un oeil à How to make a great R reproducible example? pour avoir une idée de la façon de poser une question à l'avenir.

+0

Merci beaucoup! Tu as sauvé ma journée! – Pixelements

0

Essayez de sélectionner manuellement les couleurs que vous souhaitez:

+ scale_fill_manual(values=c("#999999", "#E69F00"), 
         name="Legend title", 
         breaks=c("Electrical", "Power grids"), 
         labels=c("Electrical", "Power grids")) 

que l'on trouve sur http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/

Non testé.

+1

Je veux permuter les barres. Non seulement les couleurs:/ – Pixelements

+0

Ce n'était pas clair. De plus, utilisez dput() pour que les autres puissent vraiment répondre à la question. Je suggère d'utiliser des facteurs ordonnés dans lesquels vous pouvez spécifier la commande vous-même. http: //www.dummies.com/programming/r/how-to-work-avec-ordered-factors-in-r/ – MichaelVE

+0

Je ne suis pas sûr de savoir comment faire cela dans mon exemple .. Puisque DivisionName est en fait un facteur dans la première trame de données. – Pixelements