создать 2 x 2 граф квадратов R четных сегментов - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать сюжет размером 2 x 2 квадрата, с фигурами на них

в основном будет сеткой 2x2 + vs -

ниже производит то, что я хочу, кроме верхаквадраты не одинаковой высоты.Любая помощь будет оценена, я не вижу, как это происходит.

спасибо

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))

1 Ответ

0 голосов
/ 12 сентября 2018

Звучит так, будто вы ищете geom_tile() вместо geom_bar().

В качестве примечания, вы можете захотеть создать свой фрейм данных по столбцам, а не по строкам, так как первый дает вам больший контрольпо классу каждого столбца.

# 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))

plot

...