ggplot2: 좌표계
ggplot2 : 좌표계(Coordinate System)
-
카티시언(Cartesian) 좌표계란 직교 좌표계를 의미한다. '데카르트의' 좌표계란 의미이다. ('나는 생각한다, 고로 존재한다'로 잘 알려진 르네 데카르트는 라틴어로 카르테시우스(Cartesius)라고 불린다.) 우리가 당연하게 생각하는 xy-좌표계를 철학자 데카르트가 최초로 제안했기 때문이다.
-
극좌표계(Polar Coordinate System)는 위치를 \((x,y)\) 가 아니라 \((r, \theta)\) 로 나타내며, 원점에서의 거리 \(r\) 과 \(x\) -축과 각도 \(\theta\) 로 결정한다.
자료 시각화의 주요 요소
-
자료(Data)
-
시각적 맵핑(Aesthetic mapping)
-
기하학적 대상(Geoms)
-
보조선(Auxillary lines)
-
좌표계(Coordinate System)
- 좌표계(Coordinate System)
- 직교(Cartesian) vs. 극(Polar)
coord_fixed(ratio = )
,coord_flip()
,coord_trans()
coord_quickmap()
,coord_map()
- 좌표 레이블(Coordinate label)
+ labs(x=' ', y=' ')
- 좌표축 눈금과 레이블(Breaks & Labels)
scale_x_continuous(breaks=c())
scale_x_continuous(labels=c())
orscale_x_continuous(labels=NULL)
- 확대(Zooming)
- 데이터를 제한하지 않고 좌표의 범위를 설정하는 경우 :
coord_cartesian(xlim = c( , ), ylim = c( , ))
- 데이터를 일정한 범위로 제한하는 경우
+ xlim( , ) + ylim( , )
+ scale_x_continuous(limits=c( , ))+scale_y_continuous(limits=c( , ))
- 데이터를 제한하지 않고 좌표의 범위를 설정하는 경우 :
- 좌표계(Coordinate System)
좌표계(Coordinate System)
- 2차원 평면 상의 한 점은 좌표계에 따라 여러가지 방법으로 표현될 수 있다.
- 가장 일반적인 방법은 점에서 직교 좌표계 x-축, y-축에 수선을 그은 접점과 원점의 거리로 나타내는 방법이다. 우리가 자주 쓰는 방법으로 \((x,y)\) 로 나타내면, \(x\) -축 상에서 원점으로부터의 거리, \(y\) -축 상에서 원점으로부터의 거리를 의미한다. 이런 좌표계를 직교좌표계 또는 카티시언 좌표계라고 한다.
- 극좌표계는 좌표 평면 상의 위치를 원점에서의 거리 \(r\) 과 x-축과의 각도 \(\theta\) 를 결정한다.
- 점 \((x,y)\) 를 좌표에 나타낼 때 여러 가지 고려 사항이 생긴다.
- x-축과 y-축의 위치(
coord_flip()
) : 보통 x-축을 수평으로 놓지만 수직으로 놓을 수도 있다. - x-축과 y-축의 비율(
coord_fixed(ratio=)
) : x-축 상의 1과 y-축 상의 1을 반드시 동일한 거리로 표시할 필요는 없다.ratio=
는 \(y/x\) 를 나타낸다.ratio=2
는 데이터 상에서 x, y 모두 1 증가시 좌표 상 거리는 x:y=1:2가 된다. 범주 데이터의 경우 바로 인접한 범주로 변한 경우 차이가 1로 생각한다. - 변환(
coord_trans(x=, y=)
) : x 또는 y-축 상의 위치를 함수(예. 제곱근)로 변환할 수도 있다.
- x-축과 y-축의 위치(
d <- ggplot(mpg, aes(x=fl))
r <- d + geom_bar()
r + coord_cartesian(xlim = c(0, 5))
r + coord_fixed(ratio = 1/10)
r + coord_flip()
r + coord_polar(theta = "x", direction=1 )
r + coord_trans(y = "sqrt")
좌표 레이블(Coordinate label)
- 좌표 레이블은 기본적으로 변수 이름이다. 만약 좀 더 자세한 레이블을 원한다면
+lab(x=, y=)
를 통해 수정할 수 있다.
r
r + labs(x='fuel type', y='frequency')
#r + labs(x='연료 종류', y='횟수')
좌표 눈금과 눈금 레이블(Breaks and Labels)
- 좌표 눈금과 눈금 레이블은
scale_*_*()
함수의 인자breaks=
와labels=
로 설정할 수 있다.
(n <- d + geom_bar(aes(fill = fl)))
n + scale_fill_manual(
values = c("skyblue", "royalblue", "blue", "navy"),
limits = c("d", "e", "p", "r"), breaks =c("d", "e", "p", "r"),
name = "fuel", labels = c("D", "E", "P", "R"))
n + scale_fill_discrete(
#palette = "Blues",
breaks =c("d", "p"),
labels = c("D", "E")) +
guides(fill='none')
t <- ggplot(mpg, aes(cty, hwy)) + geom_point()
t + scale_x_continuous(
breaks=seq(10,40,10),
labels=c('ten', 'twenty', 'thirty', 'forty'))
확대(Zooming)
- 확대를 하는 방법은 두 가지가 있다.
- 기존의 데이터를 모두 보존하여 큰 그래프를 그린 후, 그 중 일부만을 확대하는 경우
- 기존의 데이터 중 일정한 범위 안의 데이터만을 선별한 그래프를 그리는 경우 선별된 데이터는 원래 데이터보다 범위가 좁고, 좁은 범위를 동일한 크기의 그래프로 그리면 그래프는 상대적으로 확대된다.
t <- ggplot(mpg, aes(displ, hwy)) + geom_point()
# 원본
t
- 데이터를 제한하지 않고 좌표의 일부를 시각화(No Clipping)
t + geom_smooth(method="lm") +
coord_cartesian(xlim = c(1.5, 2), ylim = c(20, 50))
- 데이터의 범위를 제한함으로써 확대되는 효과(Cliping)
t + geom_smooth(method="lm") + xlim(1.5, 2) + ylim(20, 50)
## Warning: Removed 191 rows containing non-finite values (stat_smooth).
## Warning: Removed 191 rows containing missing values (geom_point).
t + geom_smooth(method="lm") + scale_x_continuous(limits = c(1.5, 2)) + scale_y_continuous(limits = c(20, 50))
## Warning: Removed 191 rows containing non-finite values (stat_smooth). ## Warning: Removed 191 rows containing missing values (geom_point).
Leave a comment