변수 별 SF LINESTRING의 색상 부분

네이트 밀러

I는 다른 부분의 색하고자 sf의 변수를 사용하여 스트링을 ggplot하고 geom_sf. 를 사용하여 비슷한 작업을 수행 할 수 geom_path있지만 geom_sf비슷한 접근 방식에서는 작동하지 않는 것 같습니다. 누군가 가능한 접근 방식을 제공 할 수 있습니까?

샘플 데이터

library(sf)
library(ggplot2)
library(dplyr)
library(tibble)



df <- tibble(time = seq(1,21),
             lon = seq(-50,-30, 1) + rnorm(n = 21),
             lat = seq(10, 20, 0.5) + rnorm(n = 21),
             type = c(rep('A',5),rep('B',10), rep('A',6)))

tibble / dataframe 사용 :
tibble 및 기본 ggplot을 사용하여이 작업을 수행 할 수 있습니다. 통합 group = 1하면 단일 선이 type. 이것은 내가 만들고 싶은 플롯 유형이지만 sf대신 객체를 사용합니다.

ggplot() +
  geom_path(data = df, 
            aes(lon, lat, color = type, group = 1))

사용 sf목적 / 선 스트링을

내가 선 스트링으로 캐스팅하는 경우를 사용 group_by하고 type난 두 개의 선 스트링으로 끝날

df_sf <- st_as_sf(df, coords = c('lon','lat')) %>%
  st_set_crs(.,value = 4326) %>%
  group_by(type) %>%
  summarize(do_union = TRUE) %>%
  st_cast(.,'LINESTRING')

그런 다음 아래 코드에서 변형을 수행하면 두 개의 개별 줄이 생기고 유형 = A 인 두 부분이 연결됩니다.

ggplot() +
  geom_sf(data = df_sf, 
            aes(color = type, group = 1))

접근 방식을 ggplot + geom_path()사용하여 유형 동작 을 달성하는 방법이 있습니까 geom_sf()(따라서 변수 등을 투영 할 수 있음)?

Z.Lin

여기 에서 선을 세그먼트로 분할하는 접근 방식을 찾았 지만 사용 사례에는 과잉 일 수 있습니다.

이 시도:

df_sf <- df %>%
  
  # ensure data is sorted along x-axis
  arrange(lon) %>%
  
  # detect each time type changes, & create a duplicate point with previous type
  mutate(change.type = tidyr::replace_na(lag(type) != type, FALSE)) %>%
  mutate(type = ifelse(change.type,
                       paste(lag(type), type, sep = ";"),
                       type) %>%
           strsplit(";")) %>%
  tidyr::unnest(cols = c(type)) %>%
  
  # create new group column that increments with every colour change
  mutate(change.type = tidyr::replace_na(lag(type) != type, FALSE)) %>%
  mutate(new.type = cumsum(change.type)) %>%
  
  st_as_sf(coords = c('lon', 'lat')) %>%
  st_set_crs(., value = 4326) %>%
  
  # group by both original type (for colour) & new type (for group)
  group_by(type, new.type) %>% 
  summarize(do_union = TRUE) %>%
  st_cast(.,'LINESTRING') %>%
  ungroup()

결과 비교

cowplot::plot_grid(
  ggplot() +
    geom_path(data = arrange(df, lon), 
              aes(lon, lat, color = type, group = 1), size = 1) +
    ggtitle("geom_path approach") +
    theme(legend.position = "bottom"),
  
  ggplot() +
    geom_sf(data = df_sf, 
            aes(color = type, group = new.type), size = 1) +
    ggtitle("geom_sf approach") +
    theme(legend.position = "bottom"),

  nrow = 1
)

결과

데이터:

set.seed(123)
df <- tibble(time = seq(1,21),
             lon = seq(-50,-30, 1) + rnorm(n = 21),
             lat = seq(10, 20, 0.5) + rnorm(n = 21),
             type = c(rep('A', 5), rep('B', 10), rep('A', 6)))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SF Symbol 내부의 투명 부분 색상을 변경하는 SwiftUI

분류에서Dev

요인 수준별로 ggplot 색상, 일부 색상은 매우 유사하여 일부 그룹의 포인트를 구분할 수 없음

분류에서Dev

변수 수준을 사용하여 geom_dumbbel의 선을 색상별로 구분

분류에서Dev

색상 상수의 셀 값에 따라 내부 색상 변경

분류에서Dev

문자열 부분의 글꼴 색상을 변경할 수 있습니까?

분류에서Dev

kotlin에서 부분 문자열의 색상 변경

분류에서Dev

자리 표시 자의 한 부분에 대한 색상 변경

분류에서Dev

Android 문자열의 색상 부분 변경

분류에서Dev

JavaScript 함수를 사용하여 내부 HTML의 각 단어를 별도의 색상으로 채색

분류에서Dev

상황 별 작업 표시 줄의 색상 변경

분류에서Dev

그룹 변수별로 플롯 상자 플롯의 지터 색칠하기

분류에서Dev

색상 별 범위 변경

분류에서Dev

색상 개별 탭 변경

분류에서Dev

R-분위수 별 히 스트 플롯 색상

분류에서Dev

다른 배경에있는 텍스트 부분의 색상을 변경할 수 있습니까?

분류에서Dev

actionBar 구분선의 색상을 변경할 수 없습니다.

분류에서Dev

부트 스트랩 날짜 선택기의 색상 별 날짜

분류에서Dev

div에 래핑 된 문자열의 특정 부분 색상 변경

분류에서Dev

요소의 조건부 색상 매개 변수 Vuetify

분류에서Dev

figlet의 색상 변수!

분류에서Dev

함수 인수의 부분 이름 식별 비활성화

분류에서Dev

BigQuery SQL : 개별 제품의 배수 계산 (크기 및 색상)

분류에서Dev

미분 방정식 세트의 조건부 조각 별 함수

분류에서Dev

플롯 내부의 색상 변경

분류에서Dev

부모의 CSS 변경 색상

분류에서Dev

js의 부드러운 색상 변경

분류에서Dev

심볼 색상 SVG의 일부 변경

분류에서Dev

SVG 요소의 일부 색상 변경

분류에서Dev

graphicsmagick에서 eps 파일의 모든 단색 부분을 특정 색상으로 변경

Related 관련 기사

  1. 1

    SF Symbol 내부의 투명 부분 색상을 변경하는 SwiftUI

  2. 2

    요인 수준별로 ggplot 색상, 일부 색상은 매우 유사하여 일부 그룹의 포인트를 구분할 수 없음

  3. 3

    변수 수준을 사용하여 geom_dumbbel의 선을 색상별로 구분

  4. 4

    색상 상수의 셀 값에 따라 내부 색상 변경

  5. 5

    문자열 부분의 글꼴 색상을 변경할 수 있습니까?

  6. 6

    kotlin에서 부분 문자열의 색상 변경

  7. 7

    자리 표시 자의 한 부분에 대한 색상 변경

  8. 8

    Android 문자열의 색상 부분 변경

  9. 9

    JavaScript 함수를 사용하여 내부 HTML의 각 단어를 별도의 색상으로 채색

  10. 10

    상황 별 작업 표시 줄의 색상 변경

  11. 11

    그룹 변수별로 플롯 상자 플롯의 지터 색칠하기

  12. 12

    색상 별 범위 변경

  13. 13

    색상 개별 탭 변경

  14. 14

    R-분위수 별 히 스트 플롯 색상

  15. 15

    다른 배경에있는 텍스트 부분의 색상을 변경할 수 있습니까?

  16. 16

    actionBar 구분선의 색상을 변경할 수 없습니다.

  17. 17

    부트 스트랩 날짜 선택기의 색상 별 날짜

  18. 18

    div에 래핑 된 문자열의 특정 부분 색상 변경

  19. 19

    요소의 조건부 색상 매개 변수 Vuetify

  20. 20

    figlet의 색상 변수!

  21. 21

    함수 인수의 부분 이름 식별 비활성화

  22. 22

    BigQuery SQL : 개별 제품의 배수 계산 (크기 및 색상)

  23. 23

    미분 방정식 세트의 조건부 조각 별 함수

  24. 24

    플롯 내부의 색상 변경

  25. 25

    부모의 CSS 변경 색상

  26. 26

    js의 부드러운 색상 변경

  27. 27

    심볼 색상 SVG의 일부 변경

  28. 28

    SVG 요소의 일부 색상 변경

  29. 29

    graphicsmagick에서 eps 파일의 모든 단색 부분을 특정 색상으로 변경

뜨겁다태그

보관