plot - R ggplot2 stacked barplot normalized by the value of a column -


i have following dataframe t :

name type total    1    20    1    20    3    20    2    20    3    20 b    1    25 b    2    25 c    5    35 c    5    35 c    6    35 c    1    35 

the total identical entries same name. want plot stacked barplot type on x axis , count of name normalized total on y axis. plotted non normalized plot following :

ggplot(t, aes(type,fill= name))+geom_bar() + geom_bar(position="fill") 

how can plot normalized barplot ? i.e type = 1 y axis value 2/20 a , 1/25 b , 1/35 c...

my try did not work:

ggplot(t, aes(type, ..count../t$total[1],fill= name))+geom_bar() + geom_bar(position="fill") 

read in data

d <- read.table(header = true, text = 'name type total    1    20    1    20    3    20    2    20    3    20 b    1    25 b    2    25 c    5    35 c    5    35 c    6    35 c    1    35') 

it's bad idea call t, since name of transpose function.

calculate fractions

library(dplyr) d2 <-    d %>%    group_by(name, type) %>%    summarize(frac = n() / first(total)) 

this easier using dplyr package.

make plot

ggplot(d2, aes(type, frac, fill = name)) +   geom_bar(stat = 'identity') 

result

enter image description here


Comments

Popular posts from this blog

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.Error occurred in starting fork -

windows - Debug iNetMgr.exe unhandle exception System.Management.Automation.CmdletInvocationException -

unity3d - Fatal error- Monodevelop-Unity failed to start -