데이터를 제거하지 않고 ggplot 2 축 제한(외부 한계): 확대/축소
ggplot에서 축 한계를 지정하면 외곽 점이 제거됩니다.점에 대해서는 괜찮지만 지정된 범위와 교차하는 선을 표시할 수 있지만 ggplot의range
또는xlim/ylim
메소드는 이를 제거합니다.외부 데이터를 제거하지 않고 플롯 축 범위를 지정하는 다른 방법이 있습니까?
예.
require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)
Hadley는 99쪽에서 이것을 설명합니다; 그의 ggplot2 책 (1판)의 133, 또는 만약 당신이 2판을 가지고 있다면 160 - 161쪽에서.
문제는 당신 말대로limits
척도 또는 설정 내부에서는 데이터가 제약을 받기 때문에 데이터가 버려집니다.실제 확대/축소(모든 데이터 유지)를 수행하려면 데카르트 좌표계(또는 다른 좌표계 https://ggplot2.tidyverse.org/reference/ #섹션-좌표-시스템) 내부에서 한계를 설정해야 합니다.자세한 내용은 http://docs.ggplot2.org/current/coord_cartesian.html 를 참조하십시오.
ggplot(d, aes(x, y, group=grp)) +
geom_line() +
coord_cartesian(ylim=c(0, 7))
완성도를 높이기 위해 이 동작에 대한 시각적 가이드를 보여주는 가이드입니다.
df <- data.frame(
trt = c( 2, 3, 3.8, 5, 6),
resp = c( 2.5, 3, 3.8, 3, 3.8),
upper = c( 3, 3.3, 4.5, 3.3, 4.5),
lower = c( 2, 2.4, 3.4, 2.4, 3.4)
)
p <- ggplot() +
geom_point(data = df,
aes(x = trt,
y = resp)) +
geom_errorbar(data = df,
aes(x = trt,
y = resp,
ymin = lower,
ymax = upper),
width = 0) +
coord_flip() +
theme_bw() +
theme(plot.margin = margin(0.5, 3, 0.5, 0.5, "cm"))
p
p +
scale_y_continuous(limits = c(1, 4))
p +
coord_flip(ylim = c(1, 4))
p +
coord_flip(ylim = c(1, 4),
clip = 'off')
언급URL : https://stackoverflow.com/questions/25685185/limit-ggplot2-axes-without-removing-data-outside-limits-zoom
'programing' 카테고리의 다른 글
메서드가 여러 개 중 하나의 인수로 호출되었다고 주장합니다. (0) | 2023.07.09 |
---|---|
C에서 헤더 파일의 요점은 무엇입니까? (0) | 2023.07.09 |
C에서 메모리 효율적인 이중 링크 목록은 무엇입니까? (0) | 2023.07.04 |
asp.net 에서 데이터 테이블 열의 합계를 계산하는 방법은 무엇입니까? (0) | 2023.07.04 |
홈브루가 있는 최신 MongoDB로 업데이트할 수 없는 이유는 무엇입니까? (0) | 2023.07.04 |