我在对直方图的条形进行分组时遇到了一些问题。
这是数据集的一部分:
data <- structure(list(Color = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("blue", "red"), class = "factor"),
Group = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("Group1", "Group2", "Group3"), class = "factor"),
ID = structure(1:8, .Label = c("A1", "A2", "B1", "B2", "C1", "C2", "D1", "D2"), class = "factor"),
Value = c(194L, 1446L, 0L, 17L, 77L, 2565L, 223L, 61L)),
.Names = c("Color", "Group", "ID", "Value"), class = "data.frame", row.names = c(NA, -8L))
Run Code Online (Sandbox Code Playgroud)
我构建直方图如下:
ggplot(data, aes(ID, Value)) + geom_bar(aes(fill = Color), position = "dodge", stat="identity") + scale_fill_manual(values=c("Blue", "Red"))
Run Code Online (Sandbox Code Playgroud)
现在我将通过变量 Group 对直方图的条形进行分组,但我发现使用 facet_wrap 是不可能的:
ggplot(data, aes(ID, Value)) + geom_bar(aes(fill = Color), position = "dodge", stat="identity") + scale_fill_manual(values=c("Blue", "Red")) + facet_wrap(. ~ Group)
Run Code Online (Sandbox Code Playgroud)
layout_base(data, vars, drop = drop) 中的错误:至少一层必须包含用于分面的所有变量。
让这些组彼此隔开也一样好。
我怎样才能做到这一点?有人可以帮助我吗?
您需要删除.:
ggplot(data, aes(ID, Value)) +
geom_bar(aes(fill = Color), position = "dodge", stat="identity") +
scale_fill_manual(values=c("Blue", "Red")) +
facet_wrap( ~ Group)
Run Code Online (Sandbox Code Playgroud)
这将为您提供以下情节:
当您想改进绘图时,请包含scales = "free_x"在facet_wrap零件中。这摆脱了 x 轴上不必要的值:
ggplot(data, aes(ID, Value)) +
geom_bar(aes(fill = Color), position = "dodge", stat="identity") +
scale_fill_manual(values=c("Blue", "Red")) +
facet_wrap( ~ Group, scales = "free_x")
Run Code Online (Sandbox Code Playgroud)
这会给你:
如果您想要等宽的条形,最好使用以下space参数facet_grid:
ggplot(data, aes(ID, Value)) +
geom_bar(aes(fill = Color), position = "dodge", stat="identity") +
scale_fill_manual(values=c("Blue", "Red")) +
facet_grid(. ~ Group, scales = "free_x", space = "free_x")
Run Code Online (Sandbox Code Playgroud)
这给出:
| 归档时间: |
|
| 查看次数: |
2514 次 |
| 最近记录: |