Tidyville에 오신 것을 환영합니다.
아래는 Tidyville의 도시 인구를 보여주는 작은 df입니다. 일부 도시는 A 주에 속하고 일부는 B 주에 속합니다.
인구가 감소한 도시를 빨간색으로 강조하고 싶습니다. 지금까지 임무를 완수했습니다.
그러나 Tidyville에는 많은 주가 있습니다. ggplot의 패싯 패싯을 사용하여 각 상태에 대한 플롯을 표시하는 방법이 있습니까? 나는 새롭고 인구가 감소한 도시를 식별하기 위해 ggplot 호출 밖에서 약간의 계산을 수행하기 때문에 불확실합니다.
library(ggplot2)
library(tibble)
t1 <- tibble (
y2001 = c(3, 4, 5, 6, 7, 8, 9, 10),
y2016 = c(6, 3, 9, 2, 8, 2, 11, 15),
type = c("A", "A", "B", "B", "A", "A", "B", "B")
)
years <- 15
y2001 <- t1$y2001
y2016 <- t1$y2016
# Places where 2016 pop'n < 2001 pop'n
yd <- y2016 < y2001
decrease <- tibble (
y2001 = t1$y2001[yd],
y2016 = t1$y2016[yd]
)
# Places where 2016 pop'n >= 2001 pop'n
yi <- !yd
increase <- tibble (
y2001 = t1$y2001[yi],
y2016 = t1$y2016[yi]
)
ggplot() +
# Decreasing
geom_segment(data = decrease, aes(x = 0, xend = years, y = y2001, yend = y2016),
color = "red") +
# Increasing or equal
geom_segment(data = increase, aes(x = 0, xend = years, y = y2001, yend = y2016),
color = "black")
중개 단계가 필요하지 않으며 일부 데이터가 손실됩니다. 먼저 생성 한 내용은 그대로 유지합니다.
t1 <- tibble (
y2001 = c(3, 4, 5, 6, 7, 8, 9, 10),
y2016 = c(6, 3, 9, 2, 8, 2, 11, 15),
type = c("A", "A", "B", "B", "A", "A", "B", "B")
)
years <- 15
그러나 모든 분리 및 부분 집합 화를 수행하는 대신 y2016 > y2001
.
t1$incr <- as.factor(ifelse(t1$y2016 >= t1$y2001, 1, 0))
그런 다음 ggplot()
호출에 대한 데이터 인수를 추출하여 더 효율적으로 만들 수 있습니다. 하나의 geom_segment()
인수 만 사용 하고 color()
인수를 이전에 만든 더미 변수로 설정합니다 . 그런 다음 scale_fill_manual()
의 value
인수 에 색 벡터를 전달해야합니다 . 마지막으로 facet_grid()
인수를 추가하십시오 . 하나의 변수에만 패싯하는 경우 물결표의 반대쪽에 마침표를 넣습니다. 기간 첫 번째는 나란히 표시된다는 것을 의미하고 마지막 기간은 각 토어 위에 쌓이는 것을 의미합니다.
ggplot(data = t1) +
geom_segment(aes(x = 0, xend = years, y = y2001, yend = y2016, color=incr)) +
scale_fill_manual(values=c("black", "red")) +
facet_grid(type~.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다