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.