简体   繁体   中英

Rows As Stacked Bar Plot Using ggplot2 In R

I am just getting started with ggplot2() (data visualization) in R . The data I have has different workloads in row format. Each of these column has four different parameters that I want to plot as stacked bar plot, preferably using ggplot2() .

Reproducible Data

Workload P1   P2   P3   P4
W1       0.3  0.2  0.4  0.1
W2       0.5  0.1  0.3  0.1
W3       0.2  0.3  0.4  0.1
W4       0.3  0.2  0.5  0.1

I want to plot Workload as x-axis and then P1 , P2 , P3 and P4 will be stacked for each of the workload on y-axis .

I tried many things, but I am getting tangled with ggplot2() parameters and arguments. If anyone can suggest how I can do this, it will be helpful.

Thanks.

Change to the "superior" long format (here I use tidyr::gather ), then map your columns to aesthetics, with a column geom with stacked position (bar is a special case which counts number of observations).

library(tidyverse)

df <- read.table(text = "
Workload P1   P2   P3   P4
W1       0.3  0.2  0.4  0.1
W2       0.5  0.1  0.3  0.1
W3       0.2  0.3  0.4  0.1
W4       0.3  0.2  0.5  0.1", header = TRUE)


df_long <- df %>% 
  gather(P, value, P1:P4)

ggplot(df_long, aes(x = Workload, y = value, fill = P)) + 
  geom_col(position = position_stack())

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM