이 예제의 다음지도에 막대 그래프를 플로팅하려고합니다 : How to plot barchart onto ggplot2 map. 이것은 잘 작동하지만 예제와는 달리 x 축과 y 축을 추가하고 싶습니다. 문제는 데이터의 y 범위가 막대 그래프를 만들려는 지역에서 상당히 다르다는 것입니다.y 축이 서로 다르지만 y 한계가 서로 다른 두 개의 ggplot을 만듭니다.
비교 가능한 그래프 (즉, y 축의 치수가 동일한 경우)를 생성하기 위해 모든 그래프에 동일한 y 제한을 적용하고 각 그래프의 구분을 조정합니다. 그러나 그래프의 일부 (이 경우 p2)가 막대 위 및 아래에 큰 빈 영역을 가지고 있기 때문에 이는 좋은 해결책이 아닙니다. 그것을 작동하게하기 위해서, 그래프를 잘라내어 빈 영역을 없애는 동시에, y 축을 비교할 수 있도록 그래프의 크기를 유지하는 방법을 찾고 있습니다.
library(dplyr)
library(ggplot2)
df <- data.frame(type = c("A", "B", "A", "B"), country = c("NLD", "NLD", "BEL", "BEL"), value = c(10, -10, 5, 2))
df1 <- filter(df, country == "NLD")
p1 <- ggplot(data = df1) +
geom_col(aes(x = type, y = value)) +
scale_y_continuous(limits = c(min(df$value), max(df$value)), breaks = seq(min(df1$value), max(df1$value), 2)) +
theme_bw()
p1
df2 <- filter(df, country == "BEL")
p2 <- ggplot(data = df2) +
geom_col(aes(x = type, y = value)) +
scale_y_continuous(limits = c(min(df$value), max(df$value)), breaks = seq(min(df2$value), max(df2$value), 2)) +
theme_bw()
p2
이것은 내 문제를 90 % 해결하는 훌륭한 간단한 해결책입니다. 그러나 일부 플롯의 경우 x 축의 모든 범주에 대한 데이터가 없으므로이 솔루션은 이러한 수치의 크기가 왜곡됩니다. 보편적 인 솔루션을 제공하는 솔루션을 환영합니다. –
이것이 원하는 것인지 확신 할 수 없지만 p1, p2, ...에 'scale_x_discrete (limits = levels (df $ type))'을 추가하여 모든 플롯이 동일한 'x 축'을 갖도록 강제 할 수 있습니다. 바 너비는 p1, p2, ...에 걸쳐 동일합니다. 유형이없는 경우 공백이 생깁니다. –