创建偶数段正方形 R 的 2 x 2 图
create a 2 x 2 graph of squares R of even segments
我正在尝试创建一个 2 x 2 正方形的图,上面有数字
基本上是 + vs -
的 2x2 网格
下面产生了我想要的,除了顶部方块的高度不同。任何帮助将不胜感激,我看不出这是怎么做到的。
谢谢
df <- data.frame(matrix(ncol = 5, nrow = 0))
colnames(df) <- c("x", "y", "color","w","perc")
df[nrow(df) + 1,] = c("+","+","orange",1,77)
df[nrow(df) + 1,] = c("+","-","green",1,17)
df[nrow(df) + 1,] = c("-","+","red",1,27)
df[nrow(df) + 1,] = c("-","-","orange",1,37)
ggplot(df, aes(x = x, y = y, fill = color, label = perc)) +
geom_bar(stat = "identity", width=1.0) +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
scale_fill_identity() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
听起来您正在寻找 geom_tile()
而不是 geom_bar()
。
附带说明一下,您可能希望按列而不是按行创建数据框,因为前者允许您更好地控制每列的 class。
# create data frame
df <- data.frame(
x = c("+", "+", "-", "-"),
y = c("+", "-", "+", "-"),
color = c("orange", "green", "red", "orange"),
w = rep(1, 4),
perc = c(77, 17, 27, 37),
stringsAsFactors = FALSE
)
# plot
ggplot(df, aes(x = x, y = y, fill = color, label = perc)) +
geom_tile() +
geom_text(size = 3) +
scale_fill_identity() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
我正在尝试创建一个 2 x 2 正方形的图,上面有数字
基本上是 + vs -
的 2x2 网格下面产生了我想要的,除了顶部方块的高度不同。任何帮助将不胜感激,我看不出这是怎么做到的。
谢谢
df <- data.frame(matrix(ncol = 5, nrow = 0))
colnames(df) <- c("x", "y", "color","w","perc")
df[nrow(df) + 1,] = c("+","+","orange",1,77)
df[nrow(df) + 1,] = c("+","-","green",1,17)
df[nrow(df) + 1,] = c("-","+","red",1,27)
df[nrow(df) + 1,] = c("-","-","orange",1,37)
ggplot(df, aes(x = x, y = y, fill = color, label = perc)) +
geom_bar(stat = "identity", width=1.0) +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
scale_fill_identity() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
听起来您正在寻找 geom_tile()
而不是 geom_bar()
。
附带说明一下,您可能希望按列而不是按行创建数据框,因为前者允许您更好地控制每列的 class。
# create data frame
df <- data.frame(
x = c("+", "+", "-", "-"),
y = c("+", "-", "+", "-"),
color = c("orange", "green", "red", "orange"),
w = rep(1, 4),
perc = c(77, 17, 27, 37),
stringsAsFactors = FALSE
)
# plot
ggplot(df, aes(x = x, y = y, fill = color, label = perc)) +
geom_tile() +
geom_text(size = 3) +
scale_fill_identity() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))