참고로 이번꺼는 ggplot 안 데려와도 된다.
근데 라이브러리 깔긴 해야됨...
install.packages("sm")
install.packages("car")
네 두개 깔고 오세여.
히스토그램과 밀도 곡선
> set.seed(1)
> rating=rnorm(200)
> head(rating)
[1] -0.6264538 0.1836433 -0.8356286 1.5952808 0.3295078 -0.8204684
> rating2=rnorm(200,mean=.8)
> head(rating2)
[1] 1.2094018 2.4888733 2.3865884 0.4690922 -1.4852355 3.2976616
다들 이쯤되면 알잖음? 히스토그램은 역사와 전통의 난수생성...
> cond=factor(rep(c("A","B"),each=200))
> data=data.frame(cond,rating=(c(rating,rating2)))
> head(data)
cond rating
1 A -0.6264538
2 A 0.1836433
3 A -0.8356286
4 A 1.5952808
5 A 0.3295078
6 A -0.8204684
근데 이게 데이터프레임까지 만들 일이냐?
> hist(rating)
기본적인 히스토그램은 이렇게 생겼다.
> hist(rating,breaks=8,col="#ccccff",freq=FALSE)
색깔 말고 다를게 없는디?
> boundaries=seq(-3,3.6,by=.6)
> boundaries
[1] -3.0 -2.4 -1.8 -1.2 -0.6 0.0 0.6 1.2 1.8 2.4 3.0 3.6
> hist(rating,breaks=boundaries)
밀도? 아 그 빈도 간격 간격
아무튼 그것도 조절 가능함..
밀도 곡선
> plot(density(rating))
밀도 곡선도 된다.
plot.multi.dens <- function(s)
{
junk.x = NULL
junk.y = NULL
for(i in 1:length(s)) {
junk.x = c(junk.x, density(s[[i]])$x)
junk.y = c(junk.y, density(s[[i]])$y)
}
xr <- range(junk.x)
yr <- range(junk.y)
plot(density(s[[1]]), xlim = xr, ylim = yr, main = "")
for(i in 1:length(s)) {
lines(density(s[[i]]), xlim = xr, ylim = yr, col = i)
}
}
사전에 함수 정의하면
> plot.multi.dens( list(rating, rating2))
이거 그럼 함수 정의 안하면 두개 안된다는 얘기 아니냐...
> library(sm)
Package 'sm', version 2.2-5.7: type help(sm) for summary information
> sm.density.compare(data$rating,data$cond)
sm 라이브러리 불러온게 훨 낫네.
산점도
> set.seed(2)
> dat <- data.frame(xvar = 1:20 + rnorm(20,sd=3),
+ yvar = 1:20 + rnorm(20,sd=3),
+ zvar = 1:20 + rnorm(20,sd=3))
(대충 난수 만들었다는 얘기)
> plot(dat$xvar,dat$yvar)
평범한 산점도는 이렇게 생겼다. 그럼 회귀곡선 되나요?
> fitline=lm(dat$xvar~dat$yvar)
> abline(fitline)
예 됩니다. 아 참고로 산점도 그리는 코드가 두 가지인데 하나는 위에 있고 다른 하나가
> plot(xvar~zvar,dat)
이거다.
산점도 매트릭스
아누형 나올 것 같잖아 산점도에서 키아누 리브스 나오냐고
> plot(dat[,1:3])
아니 근데 이거 어케 해석하는겨 ㄷㄷ
> library(car)
필요한 패키지를 로딩중입니다: carData
> scatterplotMatrix(dat[,1:3],diagonal="histogram",smooth=FALSE)
경고메시지(들):
In applyDefaults(diagonal, defaults = list(method = "adaptiveDensity"), :
unnamed diag arguments, will be ignored
car 라이브러리 불러오면 이런것도 된다. ...뭐야 내 히스토그램 돌려줘요!
박스 그래프
> boxplot(len~supp,data=ToothGrowth)
내장 데이터인 ToothGrowth를 써 볼건데...
이게 len/supp boxplot이고
이건 len/dose 그래프이다. 근데 아니 이거 일일이 그리기 귀찮은데 한번에 안돼요?
> boxplot(len~interaction(dose,supp),data=ToothGrowth)
야 이럴거면 ggplot은 왜 까냐... 색깔 입히려고
> plot(len~interaction(dose,supp),data=ToothGrowth)
참고로 이것도 같은 코드다.
Q-Q plot
이거 근데 뭐 하는 그래프냐...
> set.seed(3)
> x=rnorm(80,mean=50,sd=5)
> z=runif(80)
일단 난수부터 만들고 시작해보자.
> qqnorm(x)
이렇게 하면 qqplot이 나온다.
> qqline(x)
얘까지 하면 선이 보인다.
> qqnorm(x^4)
> qqline(x^4)
(같은 그래프 우려먹기 아님)
> qqnorm(z)
> qqline(z)
(변수 바꿨음)
'Coding > R' 카테고리의 다른 글
R 배워보기-8.4. Other interesting graphs (0) | 2022.08.23 |
---|---|
R 배워보기-8.2. Miscellaneous (0) | 2022.08.23 |
R 배워보기-번외편: R로 standard curve 그리기 (0) | 2022.08.22 |
R의 내장 데이터 (부제: 공공데이터 어떻게 받아요?) (0) | 2022.08.22 |
R 배워보기-8.1. ggplot2로 그래프 그리기 (하) (0) | 2022.08.22 |