조건부 데이터를 기반으로 포인트 색상으로 퍼크의 값을 보여주는 그룹화 된 geom_bar에 sect의 값을 보여주는 geom_point를 추가하고 싶습니다.
내 데이터는 다음과 같습니다.
```structure(list(year = c(2019, 2019, 2019, 2018, 2018, 2018, 2017,
2017, 2017, 2020, 2020, 2020), ques = c("q1", "q2", "q3", "q1",
"q2", "q3", "q1", "q2", "q3", "q1", "q2", "q3"), sect = c(94.25,
99, 86.33, 94.19, 92.21, 90.42, 98.88, 89.31, 82.76, 82.06, 75.46,
59.39), perc = c(88.79, 94.71, 89.46, 89.69, 81.29, 84.1, 90.18,
89.1, 73.38, 70.66, 97, 75.99), diff = c(-5.46, -4.29, 3.13,
-4.5, -10.92, -6.32, -8.7, -0.21, -9.38, -11.4, 21.54, 16.6),
ci = c(12.76572759, 12.76572759, 12.76572759, 12.76572759,
12.76572759, 12.76572759, 12.76572759, 12.76572759, 12.76572759,
12.76572759, 12.76572759, 12.76572759)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -12L), spec = structure(list(
cols = list(year = structure(list(), class = c("collector_double",
"collector")), ques = structure(list(), class = c("collector_character",
"collector")), sect = structure(list(), class = c("collector_double",
"collector")), perc = structure(list(), class = c("collector_double",
"collector")), diff = structure(list(), class = c("collector_double",
"collector")), ci = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
테이블은 다음과 같습니다.
``` year ques sect perc diff ci
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 2019 q1 94.2 88.8 -5.46 12.8
2 2019 q2 99 94.7 -4.29 12.8
3 2019 q3 86.3 89.5 3.13 12.8
4 2018 q1 94.2 89.7 -4.5 12.8
5 2018 q2 92.2 81.3 -10.9 12.8
6 2018 q3 90.4 84.1 -6.32 12.8
7 2017 q1 98.9 90.2 -8.7 12.8
8 2017 q2 89.3 89.1 -0.21 12.8
9 2017 q3 82.8 73.4 -9.38 12.8
10 2020 q1 82.1 70.7 -11.4 12.8
11 2020 q2 75.5 97 21.5 12.8
12 2020 q3 59.4 76.0 16.6 12.8
간단한 코드 :
```df %>%
ggplot(aes(fill=ques, y = perc, x = year)) +
geom_bar(position="dodge", stat="identity")+
geom_point()
포인트에 대해 원하는 색상 조건은 다음과 같습니다.
```df <- df %>%
mutate(
color = case_when(
diff >= ci ~ "green",
diff <= -ci ~ "red",
TRUE ~ "grey"
)
)
첫 번째 단계로 점을 관련 막대 위에 표시 할 수 없습니다. 이렇게하면 점이 세로로 표시되지만 관련 연도에 가로로 표시되기를 원합니다. 따라서 관련 연도에 걸쳐 점을 표시하고 색상 조건을 다음과 같이 통합하는 데 도움을 주셔서 감사합니다. diff> = ci 인 경우 녹색, 빨간색 <=-ci 인 경우 회색으로 표시하고 둘 다 표시하지 않습니다. 이해가 되길 바라며 감사합니다
호출 position_dodge
에서 사용 geom_point
하여 포인트를 막대에 일치 시킬 수 있습니다 . 올바른 색상을 얻으려면 새 열 color
을 색상 스케일에 매핑하고 에 호출을 추가합니다 scale_color_identity
.
논리를 올바르게 이해하면의 값 diff
이 -12.8보다 작기 때문에 데이터 프레임의 어떤 점도 빨간색으로 표시되지 않습니다.
df %>%
mutate(color = case_when(diff >= ci ~ "green",
diff <= -ci ~ "red",
TRUE ~ "gray20")) %>%
ggplot(aes(fill=ques, y = perc, x = year)) +
geom_bar(position="dodge", stat="identity")+
geom_point(aes(color = color),
position = position_dodge(width = 0.9), size = 3) +
scale_color_identity()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다