#### dot chart ####

# 일반 plot()
x <- 1:10
y <- x-1
plot(x, y) #plot(y~x) 동일한 문법
plot(y~x)

#### 1. dotchart의 x(index)는 이산형( ex>문자열의 행이름 같은 or 수치형벡터 or 행렬 ) = 연속형 X ####
# *** x가 이산형태의 데이터야지 dotchart를 그릴 수 있다.
dotchart(y~x) #Error 'x'는 반드시 수치형 벡터 또는 행렬이어야 합니다.

#### 2. dotchart($칼럼인덱싱, labels, cex)는 < plot(x, y)과는 x축과 y축이 서로 바뀌어서 index가 y축에 > dot선을 가지고 나타난다. ####
# dotchart의 df자리에는 $컬럼인덱싱을 해주면, index가 (y축)으로서 간다.
#데이터 준비
mtcars # mpg(마일리지), cyl(실린더), gear(기어 수) 칼럼만 사용할 것이다.
mtcars$mpg

# 1) df의 한 칼럼(mpg칼럼)을 dotchart()에 넣어보자.
plot(mtcars$mpg) # plot()의 index는 각 차 이름(row명)가 숫자로서 나타남
image
dotchart(mtcars$mpg) #  index - 차이름(row.names)들이 y축으로 가며, 각 차이름들에 대해 dot들이 연결된다.
image

# 2) *** index(y축)가 행번호가 찍혀야하는데, 행 이름(문자열)이 기재되어있는 df라면 비어있게 되므로,  labels = row.names()라 기재해준다.
row.names(mtcars)
dotchart(mtcars$mpg, labels = row.names(mtcars))
image

# 3) *** y축(index) 글자의 크기를 줄일려면, cex = 0.7을 보통 주면 된다 *** ####
dotchart(mtcars$mpg, labels = row.names(mtcars), cex=0.7)
image


#### 3. 이제  dotchart()로 표현될 $mpg칼럼의 점들이 $cyl 컬럼에 대해서 어떻게 다른지 알아보자. ####
# 1) ***dotchat()에 그려지는 mpg칼럼에 대해 오름차순으로 먼저 정렬한다.
# *** df [ order ( $칼럼인덱싱 ),   ] *** 으로 한 칼럼에 대해 *** 오름차순 sort *** 시킨다.
carmpg <- mtcars[order(mtcars$mpg), ]
carmpg

# 2) ***mpg칼럼에 대해 오름차순 정렬된 df에  <- 기준 범주(그룹)를 적용할  칼럼 하나를 factor화(factor()) 하기 ####
참고) https://thebook.io/006723/ch02/03/06/ 
     # - factor()는 연속적인 - 수치형(my)연속형) (Numeric)과 상반되는 개념인 범주형(categorical)자료형으로
     # - 1) 순서를 둘 수 있는 순서형(Ordinal)과 2) 비교불가능한 범주인 명목형(Nominal)로 구분된다.
     # *** 실험결과 여기서는 factor() 안만들고 해도 상관없더라... ***

carmpg$cyl # cyl칼럼은 8 or 6 or 4이다.***연속형의 값이 아니라, 각각을 <구분해주는 요소(Factor)>들을 의미한다. ex> 남/여  1/2는  값의 크고작은 수치가 중요한게 아니라 <서로를 구분해주는 카테고리형, 범주형의 Factor>이다.
carmpg$cyl <- factor( carmpg$cyl )

# factor화된 것 확인
class(carmpg$cyl) # "factor"
# my)
sapply(carmpg, FUN = "class")

# 3) dotchart()에 그려지는 칼럼(mpg)에 대해 sort한 새로운df를 dotchart()그리기
dotchart(carmpg$mpg, labels = row.names(carmpg), cex=0.7 )

# 4) *** dotchart 칼럼(mpg)에 대해,  범주를 두고 싶은 칼럼(cyl)의 값 별로 -> 새로운 color칼럼 만들기
#cyl칼럼의 요소들 확인해보기
table(carmpg$cyl) # 4 /6 /8 종류가 있다.
# ***color칼럼 <생성과 동시에 &칼럼인덱싱> + 행인덱싱자리에   범주적용컬럼의 각별로 조건문인덱싱  = color값 문자열 대입
carmpg$color [ carmpg$cyl == 4 ] <- "blue"
carmpg$color [ carmpg$cyl == 6 ] <- "green"
carmpg$color [ carmpg$cyl == 8 ] <- "red"


# 5) ***cyl값에 대한 color칼럼을 dotchart()의 color=인자로 넣어준다.
dotchart(carmpg$mpg, labels = row.names(carmpg), cex=0.7, color=carmpg$color )
image

# 6) *** 그래프보고 해석해보기
# - cyl 8개 짜리(=빨간색)일수록 mpg가낮은 편이다.
# - cyl 4개 짜리일수록 mpg가 높은 편이다.


# 7) *** cyl값(4, 6, 8)별로 그룹을 나눠서 dotchart()보기 groups = 그룹 나누는 기준이 될 $칼럼
dotchart(carmpg$mpg, labels = row.names(carmpg),
          groups = carmpg$cyl, cex=0.7, color=carmpg$color )
image

# 8) main인자로 dotchart 제목 주기
dotchart(carmpg$mpg, labels = row.names(carmpg),
          groups = carmpg$cyl, cex=0.7, color=carmpg$color,
          main = "Milage depending on numbers of cylinder")

# 9) xlab인자로 dotchart x축 label 주기
dotchart(carmpg$mpg, labels = row.names(carmpg),
          groups = carmpg$cyl, cex=0.7, color=carmpg$color,
          main = "Milage depending on numbers of cylinder",
          xlab = "Milage per Gallon")

image

image


### 최종해석 : cyl와 milage는 반비례하는 경향이 있다.

+ Recent posts