我的数据如下:
system operation_type prep_time operation_time
A x 0.7 1.4
A y 0.11 2.3
A z 1.22 6.7
B x 0.44 5.2
B y 0.19 2.3
B z 3.97 9.5
C x 1.24 2.4
C y 0.23 2.88
C z 0.66 9.7
我希望在prep_time和操作时间上有一个堆积图表,它给出了按系统分组的total_time,然后由operation_type进行分面。
我的代码现在看起来像这样。
library(ggplot2)
df <- read.csv("test.csv", strip.white=T)
plot <- ggplot(df, aes(x=system,y=(prep_time+operation_time))) + geom_bar(stat="identity") + facet_grid(.~operation_type)
我需要的是条形区别,它显示total_time的哪一部分是prep_time,什么是operation_time。我想为prep_time和operation_time添加一个图例并使用不同的颜色,但我无法弄清楚我是如何做到的。
答案 0 :(得分:1)
这应该给你一个开始。您需要根据operation_time
和Type
将数据框从宽格式转换为长格式,因为它们是相同的变量。在这里,我调用了新列system
。要在x轴上绘制fill
,我们可以使用geom_col
指定不同的颜色。 facet_grid
是绘制堆积条形图的命令。 library(tidyr)
library(ggplot2)
df2 <- df %>% gather(Type, Time, ends_with("time"))
ggplot(df2, aes(x = system, y = Time, fill = Type)) +
geom_col() +
facet_grid(. ~ operation_type)
是创建构面的命令。
df <- read.table(text = "system operation_type prep_time operation_time
A x 0.7 1.4
A y 0.11 2.3
A z 1.22 6.7
B x 0.44 5.2
B y 0.19 2.3
B z 3.97 9.5
C x 1.24 2.4
C y 0.23 2.88
C z 0.66 9.7",
header = TRUE, stringsAsFactors = FALSE)
数据强>
facet_wrap