是否可以在 ggplot2 堆叠条形图的堆叠之间放置 space?
Is it possible to put space between stacks in ggplot2 stacked bar?
我从 here:
中拿了这个例子
DF <- read.table(text="Rank F1 F2 F3
1 500 250 50
2 400 100 30
3 300 155 100
4 200 90 10", header=TRUE)
library(reshape2)
DF1 <- melt(DF, id.var="Rank")
library(ggplot2)
ggplot(DF1, aes(x = Rank, y = value, fill = variable)) +
geom_bar(stat = "identity")
是否可以使用 ggplot2 创建如下图所示的堆积条形图?我不想用不同的颜色来区分堆栈。
编辑: 根据 Pascal 的评论,
ggplot(DF1, aes(x = Rank, y = value)) +
geom_bar(stat = "identity",lwd=2, color="white")
我仍然有条形图的白色边框。
这是我能得到的最接近您的示例图的图。与您已经排序的内容相比,它没有太大改进,但不太强调灰色背景上的白色条形边框。
library(ggplot2)
p <- ggplot(DF1, aes(x = Rank, y = value, group = variable))
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5,
width = 0.5, colour = "white", fill = "black")
p <- p + theme_classic()
p <- p + theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
p
产生:
如果你想保留灰色背景,你可以准确地找出它是什么灰色阴影,并在删除背景网格时使用该颜色作为线条(这不是正确的阴影)。
p <- ggplot(DF1, aes(x = Rank, y = value))
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5,
width = 0.5, colour = "grey", fill = "black")
p <- p + theme(panel.grid = element_blank())
p
此解决方案的一个问题是看不到非常小的组(例如,当 Rank = 4 变量 F3 = 10 时;这个小值完全被白色条形轮廓覆盖)。
您的示例数据:
DF1 <- structure(list(Rank = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L), variable = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L), .Label = c("F1", "F2", "F3"), class = "factor"),
value = c(500L, 400L, 300L, 200L, 250L, 100L, 155L, 90L,
50L, 30L, 100L, 10L)), row.names = c(NA, -12L), .Names = c("Rank",
"variable", "value"), class = "data.frame")
我从 here:
中拿了这个例子DF <- read.table(text="Rank F1 F2 F3
1 500 250 50
2 400 100 30
3 300 155 100
4 200 90 10", header=TRUE)
library(reshape2)
DF1 <- melt(DF, id.var="Rank")
library(ggplot2)
ggplot(DF1, aes(x = Rank, y = value, fill = variable)) +
geom_bar(stat = "identity")
是否可以使用 ggplot2 创建如下图所示的堆积条形图?我不想用不同的颜色来区分堆栈。
编辑: 根据 Pascal 的评论,
ggplot(DF1, aes(x = Rank, y = value)) +
geom_bar(stat = "identity",lwd=2, color="white")
我仍然有条形图的白色边框。
这是我能得到的最接近您的示例图的图。与您已经排序的内容相比,它没有太大改进,但不太强调灰色背景上的白色条形边框。
library(ggplot2)
p <- ggplot(DF1, aes(x = Rank, y = value, group = variable))
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5,
width = 0.5, colour = "white", fill = "black")
p <- p + theme_classic()
p <- p + theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
p
产生:
如果你想保留灰色背景,你可以准确地找出它是什么灰色阴影,并在删除背景网格时使用该颜色作为线条(这不是正确的阴影)。
p <- ggplot(DF1, aes(x = Rank, y = value))
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5,
width = 0.5, colour = "grey", fill = "black")
p <- p + theme(panel.grid = element_blank())
p
此解决方案的一个问题是看不到非常小的组(例如,当 Rank = 4 变量 F3 = 10 时;这个小值完全被白色条形轮廓覆盖)。
您的示例数据:
DF1 <- structure(list(Rank = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L), variable = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L), .Label = c("F1", "F2", "F3"), class = "factor"),
value = c(500L, 400L, 300L, 200L, 250L, 100L, 155L, 90L,
50L, 30L, 100L, 10L)), row.names = c(NA, -12L), .Names = c("Rank",
"variable", "value"), class = "data.frame")