티스토리 뷰
반응형
선그래프를 그릴때 선에 y 축값에 따라 색을 입히고 싶다면, colour 를 설정만 하면 된다. 아래 소스에보면, colour = dsci2 로 y축값을 입력했다. 그러면 디폴트로 파란 계열의 색상이 셋팅된다. 참고한 데이터는 여기에서 받아 사용하였다(tidytuesday)
ggplot(drought_fips2_ak_f, aes(x = year2, y = dsci2, group = 1, colour = dsci2))+
geom_line(size = 1) +
theme_void(base_family = "AppleSDGothicNeo-ExtraBold") +
theme(
plot.background = element_rect(fill = "#F1F0EA", color = "#F1F0EA"),
plot.margin = margin(1,1,1,1, "cm")
)
사실 색을 y축 값에 따라 셋팅하는 과정에는, 선형보간을 해서 데이터를 잘게 쪼개야 하는데, 이 과정이 어렵다. 변경전 데이터에 row 별로 id 를 부여해놓고, approx 함수를 이용해서 데이터를 각각 50개구간으로 쪼갠다. 그러고나서 데이터를 tibble 로 만들고, 기존데이터에서 필요한건 join 해서 채운다.
drought_fips1 = drought_fips1 %>%
mutate(id = row_number())
xgrid = with(drought_fips1,
seq(min(id), max(id), length = (length(id) - 1) * 50 + 1))
approx_year = with(drought_fips1, approx(id, year, xgrid))
approx_dsci = with(drought_fips1, approx(id, dsci, xgrid))
drought_fips2 = tibble(id = floor(approx_year$x), year2 = approx_year$y, dsci2 = approx_dsci$y) %>%
left_join(drought_fips1, by = "id")
그리고, 색이 맘에 안들면, scale_colour_gradient 를 사용하면된다. yellow 부터 red 색을 가지고 그라디언트 효과를 주었다.
ggplot(drought_fips2_ak_f, aes(x = year2, y = dsci2, group = 1, colour = dsci2))+
geom_line(size = 1) +
scale_colour_gradient(low = "yellow", high = "red", na.value = NA)+
theme_void(base_family = "AppleSDGothicNeo-ExtraBold") +
theme(
plot.background = element_rect(fill = "#F1F0EA", color = "#F1F0EA"),
plot.margin = margin(1,1,1,1, "cm")
)
반응형
그리고, 지금 사용하는 데이터가 미국의 각 주의 데이터를 다 가지고 있다보니, facet_wrap 함수를 이용해서 아래처럼 주별로 그래프를 나누어 만들수 있다. 근데 이렇게 하다보니, 너무 밋밋해서 라인에 색을 강조하고 싶었다.
결과는 아래와 같다. ggplot2 참 사용할 수록 만능인것 같다.
ggplot(drought_fips2_f, aes(x = year2, y = dsci2, group = 1, colour = dsci2))+
geom_line(size = 0.7) +
scale_colour_gradient(low = "yellow", high = "red", na.value = NA,
breaks = c(0,500), name = "DSCI")+
theme_void(base_family = "AppleSDGothicNeo-ExtraBold") +
facet_wrap( ~ state) +
labs(title = "Drought Conditions in the US") +
theme(
plot.background = element_rect(fill = "#F1F0EA", color = "#F1F0EA"),
plot.margin = margin(1,1,1,1, "cm"),
legend.box.margin = margin(0,0,1,1, "cm"),
legend.key.size = unit(0.2, "cm"),
legend.key.width = unit(0.4, "cm"),
legend.position = c(0.81,-0.07),
legend.title = element_text(size = 8, margin = margin(-0.3,0.1,0,0, "cm")),
legend.direction = "horizontal",
legend.text = element_text(size = 8, margin = margin(0,0,0,0,"cm")),
plot.title = element_text(hjust = 0.5,
margin = margin(0,0,1,0, "cm"))
)
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 맥북
- 이클립스
- 아이맥
- docker
- ktm모바일
- SVN
- 자급제폰
- python
- ggplot
- 셀프개통
- ipTIME
- MySQL
- ubuntu
- 알뜰요금제
- Spring
- javascript
- heroku
- MyBatis
- 도넛차트
- java
- Google Chart Tools
- MongoDB
- R
- eclipse
- 마인크래프트
- Oracle
- github
- 막대그래프
- vagrant
- ggplot2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함