본문 바로가기
반응형

2. 그래프 그리기 (고수준 함수)39

R 히스토그램에 라인 추가하기 freq 옵션을 FALSE 로 설정합니다. lines 함수를 이용하여 아래 코드처럼 입력해줍니다. set.seed(1) data=rnorm(100,170,5) hist(data,freq=F) lines(density(data)) 2021. 10. 21.
[R 그래프] 여러 집단의 전후변화 비교 막대그래프 library(lsr) #데이터 dt1=c(1,2,3,4,5,6,7,8,9,10) dt2=c(1,2,3,4,5,6,7,8,9,100) #통계량계산(중앙값절대편차, 평균절대편차, 표준편차) dt_dev=c(mad(dt1),mad(dt2),aad(dt1),aad(dt2),sd(dt1),sd(dt2)) names(dt_dev)=rep(c("dt1","dt2"),3) #벡터 원소이름지정 barplot(dt_dev,beside=TRUE,col=c("red","red","blue","blue","green","green")) legend("topleft",legend=c("MAD","AAD","SD"),fill=c("red","blue","green"),border="white",cex=1.2) 2021. 10. 19.
[R시각화] boxplot 원하는 순서로 그리기 내장데이터인 InsectSprays 를 사용하겠습니다. 살충제와 곤충 수 데이터입니다. 살충제는 A,B,C,D,E,F 네가지입니다. > head(InsectSprays) count spray 1 10 A 2 7 A 3 20 A 4 14 A 5 14 A 6 12 A boxplot을 그려봅시다. dt=InsectSprays boxplot(count ~ spray, data = dt) 위와 같이 알파벳 순서대로 그려집니다. 원하는 순서로 바꿔봅시다. B,D,C,E,A 순으로 바꾸겠습니다. factor 를 이용합니다. dt$spray 2021. 5. 28.
R에서 신뢰구간을 정규분포에 색칠하기 아래는 코드입니다. 95% 신뢰구간입니다. #표준정규분포 그래프 x=seq(-4,4,by=0.01) y=dnorm(x) plot(x,y,type="l",ann=FALSE,axes=FALSE) #임계값 설정(기각역) #99%로 할 경우 0.995 입력 margin=qnorm(0.975) #축 및 값 추가, pos=c(0,0) 으로 설정해야 축과 그래프 사이 간격 없어짐 #mgp 는 tick 과 tick label 사이의 간격임 mgp=c(3, 2, 0) #padj=1 이 나은듯. 윗선이 맞춰짐 #99%로 할 경우 2.58로 수정 axis(1,at=c(-4,-margin,0,margin,4), pos=c(0,0), label=c("",expression(-1.96* frac(sigma, sqrt(n))),e.. 2021. 5. 21.
R에서 파레토 차트 그리기 파레토 법칙이란? 파레토법칙은 20:80의 법칙이라고도 부릅니다. 상위 20%가 전체 원인의 80%를 차지한다는 법칙인데요. 예시는 아래와 같습니다. 모든 고객의 상위 20% 고객이 전체 매출의 80%를 차지함. 데이터 올 한해 고객이 5명이었고, 고객 5명의 구매액이 아래와 같다고 합시다. 단위는 만원입니다. 고객A : 100 고객B : 80 고객C : 10 고객D : 50 고객E : 300 파레토 차트 그리기 설명은 주석으로 대신합니다. #패키지 설치 install.packages("qcc") #패키지 불러오기 library(qcc) #데이터 입력 data 2021. 3. 17.
[R시각화] 조건에 따른 그래프를 출력하는 coplot 함수, 매우 유용함 coplot 함수는 조건에 따른 그래프를 출력해줍니다. 조건에 따른 그래프라고 하면 무슨 말인지 잘 이해가 되지 않을테니 예제를 통해 이해해봅시다. 예제에 사용할 데이터는 quakes 라는 데이터입니다. 피지에서 지진이 발생할 때 마다 기록한 정보입니다. lat은 위도, long은 경도, depth는 깊이, mag는 리히터 규모, stations은 관측소 수 입니다. > str(quakes) 'data.frame':1000 obs. of 5 variables: $ lat : num -20.4 -20.6 -26 -18 -20.4 ... $ long : num 182 181 184 182 182 ... $ depth : int 562 650 42 626 649 195 82 194 211 622 ... $ m.. 2020. 12. 31.
[R시각화] 산점도의 테두리 영역을 지정하는 chull 함수 chull 함수는 입력된 산점도 데이터에서 convex hull을 형성하는 점들의 index를 출력해줍니다. 쉽게 말하면 테두리입니다. 먼저 산점도 데이터가지고 그래프를 하나 그려봅시다. iris 데이터를 이용하겠습니다. x=iris$Sepal.Length y=iris$Sepal.Width plot(x,y,xlab="sepal length",ylab="sepal width") 이 데이터에 chull 함수를 적용해봅시다. 테두리 점들의 index 입니다. > chull(x,y) [1] 119 69 61 42 14 23 33 16 132 위 index를 이용하여 테두리가 추가된 그래프를 그려봅시다. x=iris$Sepal.Length y=iris$Sepal.Width plot(x,y,xlab="sepal l.. 2020. 12. 31.
[R시각화] 모집단 평균, 기각역 표시된 정규분포 그래프 그리기 모집단의 평균(mu0), 임계값(z*), 우리가 뽑은 표본의 평균(bar_X) 가 표시된 그래프입니다. #표준정규분포 그래프 x=seq(-4,4,by=0.01) y=dnorm(x) plot(x,y,type="l",ann=FALSE,axes=FALSE) #임계값 설정(기각역) margin=qnorm(0.95) #축 및 값 추가, pos=c(0,0) 으로 설정해야 축과 그래프 사이 간격 없어짐 axis(1,at=c(-4,0,margin,qnorm(0.99),4), pos=c(0,0), label=c("",expression(mu[0]),expression(z^"*"),expression(bar(x)[0]),"")) #색칠을 위한 값 설정 x_margin=seq(margin,4,by=0.01) y_margin.. 2020. 12. 31.
[R시각화] 점의 밀도를 시각화해주는 smoothScatter 함수 smoothScatter 함수는 점의 밀도를 시각화해줍니다. 점이 많이 모여있는 곳은 진한 색으로, 그렇지 않은 곳은 흐린 색으로 시각화합니다. 산점도 그래프 plot 처럼, 점 데이터를 입력해주면 됩니다. 예를 들어봅시다. 옵션을 적용한 경우도 출력하였습니다. par(mfrow=c(2,2)) par(mar=c(2,2,2,2)) #산점도 plot(iris$Sepal.Length) #밀도그래프, 옵션 미적용 smoothScatter(iris$Sepal.Length) #nrpoint 옵션 적용. 출력될 점의 수, 낮은 밀도부터 출력 smoothScatter(iris$Sepal.Length,nrpoint=0) #색 설정, colorRampPalette 사용해야함. mypltt 2020. 12. 31.
[R시각화] 노이즈를 발생시키는 jitter함수 jitter 함수는 입력 값에서 노이즈를 발생시킵니다. 아래는 간단한 예시입니다. factor 옵션을 이용하여 강도를 조절할 수도 있습니다. > x=1:5 > jitter(x) [1] 1.1837416601367294 [2] 1.8277301006950437 [3] 3.0211889690719547 [4] 4.0621753104031084 [5] 5.0300368266180158 그래프를 이용하여 jitter 함수 적용 전후를 비교해봅시다. par(mfrow=c(1,2)) x=seq(0,10,len=30) y=rep(1,length(x)) plot(x,y) plot(x,jitter(y)) 이번에는 옵션인 factor를 변경하고 비교해봅시다. 디폴트 값은 1입니다. x=seq(0,10,len=30) y=r.. 2020. 12. 30.
[R 시각화] 클리브랜드 점 그래프 (유용한데 한마디로 설명하기가...) 클리브랜드 점 그래프는 한마디로 설명하기가 참 애매합니다. 예시를 통해 이해해봅시다. 간단하게 이해하실 수 있습니다. 5사람의 수학점수로 행렬을 만들어봅시다. 5사람의 이름은 행렬 행 이름에 넣어야 합니다. #점수와 이름 > math_score=c(88,75,62,91,100,48) > names=c("tim","marry","kate","john","kim","park") #행렬생성 > m=matrix(math_score) #행렬 열이름,행이름 > rownames(m)=names > colnames(m)="math_score" > m score tim 88 marry 75 kate 62 john 91 kim 100 park 48 이 행렬로 클리브랜드 점 그래프를 그려봅시다. > dotchart(m) 그.. 2020. 12. 27.
[R시각화] 확률분포 함수 쉽게 그리는 방법 (curve 함수) 정규분포 함수를 그린다고 해봅시다. 정규분포의 확률밀도함수는 dnorm(x) 입니다. 먼저 plot 함수를 이용하여 그래프를 그려보겠습니다. 뒤에서는 curve함수를 이용할 것인데, 둘을 비교하면 curve함수가 얼마나 편한지 알게 되실 것입니다. plot 함수 이용 x=seq(-4,4,0.01) y=dnorm(x) plot(x,y,type="l",main="PDF of N(0,1)") curve 함수 이용 curve(dnorm(x),-4,4,main="PDF of N(0,1)") 2020. 12. 26.
[R 시각화] 산점도 제목,축이름,눈금이름 크기변경 산점도 그래프에서 제목,축이름,눈금이름의 크기를 변경하는 방법은 크게 세가지가 있습니다. 1) plot 그래프에 옵션 설정 2) 저수준함수 title, axis 이용 3) 그래픽 파라미터 일괄 변경 (par 함수) 이 글에서는 1번의 경우를 다룹니다. 제목,축이름,눈금이름 크기를 변경할 때, plot 함수에 입력하는 옵션은 아래와 같습니다. 제목 크기 : cex.main 축 이름 크기 : cex.lab 눈금 이름 크기 : cex.axis 아래는 예시입니다. plot(1:10,main="my graph",xlab="X",ylab="Y", cex.main=1.5,cex.lab=1.7,cex.axis=2) 2020. 12. 23.
[R 시각화] 그룹형 막대그래프 그리는 방법 행렬을 하나 정의해봅시다. 세 사람의 수학,영어, 과학 성적입니다. Tim = c(67,68,39) Marry = c(65,36,20) Kate = c(88,90,45) dt=cbind(Tim,Marry,Kate) rownames(dt)=c("Math","English","Science") 데이터를 확인해봅시다. > dt Tim Marry Kate Math 67 65 88 English 68 36 90 Science 39 20 45 barplot 을 적용합시다. beside 를 TRUE로 설정해야 그룹형 막대그래프가 그려집니다. 열이 하나의 그룹이 되고, 각 열의 행은 그룹에 속한 막대가 됩니다. barplot(dt,beside=TRUE) 색을 지정해봅시다. col 옵션을 사용합니다. 범례가 들어갈 자리.. 2020. 12. 22.
[R 시각화] 산점도 점에 번호 붙이는 방법 산점도 그래프에 있는 점에 번호를 붙이는 방법입니다. text 함수를 이용합니다. 아래는 설정한 옵션입니다. text(x좌표,y좌표,labels=번호,pos=위치,cex=크기) 그래프를 그려봅시다. set.seed(2020) x=rnorm(30) y=rnorm(30) plot(x,y) text(x,y,labels=1:30,pos=1,cex=0.8) pos 옵션 값의 역할은 아래와 같습니다. 1 : 하 2 : 좌 3 : 상 4 : 우 pos를 바꿔가며 그래프를 그려봅시다. set.seed(2020) x=rnorm(30) y=rnorm(30) par(mfrow=c(2,2)) for (i in 1:4){ plot(x,y) title(main=paste("pos=",i)) text(x,y,labels=1:30,.. 2020. 12. 17.
[R 시각화] 막대그래프 x축 눈금, y축 눈금 크기 변경 1. 막대그래프 그리기 volume=c(500,600,200) names=c("americano","latte","chocolate") barplot(volume,names=names) 2. x축 눈금 크기 변경 cex.names 옵션을 사용합니다. mb=barplot(volume,names=names,cex.names=1.4) 3. y축 눈금 크기 변경 cex.axis 옵션을 사용합니다. mb=barplot(volume,names=names,cex.axis=1.5) 2020. 12. 16.
[R 시각화] 막대그래프 x축 눈금이름 회전하기 막대그래프를 하나 그려봅시다. volume=c(500,600,200) names=c("americano","latte","chocolate") barplot(volume,names=names) 90도 단위로 회전 las 옵션을 이용하면 90도 단위로는 회전이 가능합니다. las 옵션을 사용합니다. barplot(volume,names=names,angle=90,las=2) 임의의 각도로 회전 임의의 각도로 회전하려면 text 함수를 이용하면 됩니다. xpd 는 plot region 밖으로 나갈 수 있는지 여부를 결정하는 옵션입니다. adj=1 은 오른쪽 정렬입니다. srt가 각도입니다. volume=c(500,600,200) names=c("americano","latte","chocolate") mb=.. 2020. 12. 16.
[R 시각화] 팩토리얼, 감마 함수 그래프 팩토리얼 함수를 산점도로, 감마함수를 선으로 그린 그래프입니다. 범위 수정을 원하면 x와 x_g를 수정해주면 됩니다. x=1:5 y=factorial(x-1) plot(x,y,main="Factorial function",cex.main=1.5,pch=16,col="red") x_g=seq(1,5,0.02) y_g=gamma(x_g) lines(x_g,y_g) 2020. 12. 14.
[R 시각화] 다변량 시계열 그래프 그리기 다변량 시계열을 생성하고 그래프를 그려봅시다. 다변량시계열은 ts 함수에 행렬을 입력하여 생성합니다. 먼저 행렬을 생성합시다. > mat=matrix(rnorm(30),10,3) > mat [,1] [,2] [,3] [1,] -0.176291735 0.3323575 -0.6542597 [2,] -0.928060332 -0.5374235 0.7382477 [3,] -0.003182761 1.7133234 0.9095766 [4,] 1.459855751 -1.0273686 1.7733747 [5,] 0.057111027 -2.1042541 0.7851097 [6,] -0.411653367 0.5216750 1.4261827 [7,] -0.381249441 -1.0180405 -1.0944751 [8,] -0.. 2020. 12. 13.
[R 시각화] 시계열 그래프 그리기 먼저 ts 함수를 이용하여 시계열 데이터를 생성하고 plot 함수로 그래프를 그려봅시다. rnorm 함수에서 임의로 100개의 값을 추출합니다. 시작일은 2020년 첫분기로 놓습니다. freq 를 12로 놓을 경우 1년이 12개로 나눠지므로, c(2020,1) 의 의미는 2020년 1월이 됩니다. y=ts(rnorm(100),start=c(2020,1),freq=12) plot(y) 2020. 12. 13.
R 히스토그램 x축, y축 눈금 설정하기 R 히스토그램 x축, y축 눈금 설정하기 오늘 코드 모아보기 #breaks 설정 brks=seq(4,8,0.2) #hist 그리기(제목,축이름,눈금 없음) hist(iris$Sepal.Length, breaks=brks, ann=FALSE,axes=FALSE,xlim=c(2,10),ylim=c(0,22)) #x축 눈금 추가 axis(side=1,at=seq(2,10,1)) #y축 눈금 추가 axis(side=2,at=seq(0,20,2)) #제목 추가 title(main="my histogram",xlab="Sepal Length",ylab="빈도") 따라하기 내장데이터인 iris 의 Sepal.Length 로 히스토그램을 그리겠습니다. 먼저 x값 범위를 알기 위해 최댓값과 최솟값을 구해봅시다. > mi.. 2020. 12. 9.
R 밀도(density) 히스토그램 히스토그램의 y값이 왜 1이 넘을까 R 히스토그램에서 밀도(density) 히스토그램으로 설정을 하면 전체 넓이가 1이 되게끔 그래프를 그려줍니다. 따라서 각 계급 간격의 합이 1보다 작다면 높이가 1보다 커질 수 있는 것입니다. 계급 간격이 0~0.1, 0.1~0.2 두개뿐이라고 해봅시다. 이때 밑변이 0.2이므로, 전체 넓이가 2이 되려면 각 높이의 합이 5가 되야 합니다. 예를들어 아래와 같은 계급값과 도수가 있다고 합시다. 160~170 : 5 170~180 : 5 상대도수를 계산하면 아래와 같습니다. 160~170 : 0.5 170~180 : 0.5 R 히스토그램에서의 density는 아래와 같습니다. 160~170 : 0.05 170~180 : 0.05 height=c(161,162,163,164,165,171,172,173,1.. 2020. 12. 9.
R 히스토그램 여러개 겹쳐그리기 (투명하게) R 히스토그램 여러개 겹쳐그리기 (투명하게) 오늘 코드 모아보기 #break 설정 x_ax=seq(02,8,0.2) #히스토그램 만들어서 저장, plot=FALSE로 설정하여 그려지지 않게함 hist1=hist(iris$Sepal.Length, breaks=x_ax, plot = FALSE) hist2=hist(iris$Sepal.Width, breaks=x_ax, plot = FALSE) #plot 함수로 히스토그램 그리기 plot(hist1, col=adjustcolor("red",alpha=0.5),ylim=c(0,40),ann=FALSE) plot(hist2, col=adjustcolor("blue",alpha=0.5), add = TRUE) #제목설정 title(main="my histogram.. 2020. 12. 9.
R 역 누적분포 히스토그램 R 역 누적분포 히스토그램 일반적인 누적분포를 계산하는 방법은 아래와 같습니다. data=c(1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6) 간격을 1로 설정하면 계급과 도수는 아래와 같습니다. 누적도수의 경우 간격을 1로 설정해야 그래프를 그리기가 수월합니다. 0-1 : 11-2 : 22-3 : 33-4 : 44-5 : 55-6 : 6 누적도수로 나타내면 아래와 같습니다. 0-1 : 11-2 : 32-3 : 63-4 : 104-5 : 155-6 : 21 여기서 말하는 '역'누적분포는 아래와 같습니다. 0-1 : 211-2 : 202-3 : 183-4 : 154-5 : 115-6 : 6 누적도수가 앞에서 부터의 누적이라면, 역누적도수는 뒤에서부터의 누적입니다. 아래의 절차로 .. 2020. 12. 8.
R 누적도수 그래프 (cumsum) R 누적도수 그래프 (cumsum) 누적도수 히스토그램을 이해하기 위해 한 가지 예시를 들겠습니다. 아래 벡터를 이용하여 누적도수 히스토그램을 그릴 것입니다. data=c(1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6) 간격을 1로 설정하면 계급과 도수는 아래와 같습니다. 누적도수의 경우 간격을 1로 설정해야 그래프를 그리기가 수월합니다. 0-1 : 11-2 : 22-3 : 33-4 : 44-5 : 55-6 : 6 누적도수로 나타내면 아래와 같습니다. 0-1 : 11-2 : 32-3 : 63-4 : 104-5 : 155-6 : 21 입력값이 히스토그램에 알맞지 않기 때문에 막대그래프로 그려야 합니다. 절차는 아래와 같습니다. 1) 도수 계산 (hist 함수)2) 누적도수 계산.. 2020. 12. 8.
R 밀도(density) 히스토그램 R에서 밀도(density) 히스토그램을 그리는 방법입니다. 히스토그램을 그릴 때 옵션에 freq를 FALSE로 바꿔주면 됩니다. 아래는 예시입니다. > data=c(1,2,2,3,3,3,4,4,4,4,5,5,5,5,5) > hist(data,freq=FALSE) y축 범위도 설정해봅시다. > hist(data,freq=FALSE,ylim=c(0,0.5)) 2020. 12. 8.
R 히스토그램에서 구간은 미만일까 이하일까. R 히스토그램에서 구간은 미만일까 이하일까. R 히스토그램을 그릴 때, 구간을 아래와 같이 나눴다고 해봅시다. 0~22~44~66~8 이때 구간의 부등호는 어떻게 될까요? 이상일까요 초과일까요, 이하일까요 미만일까요? 한번 확인해봅시다. 데이터 벡터를 만들겠습니다. 각 숫자별 숫자의 개수만큼의 원소가 있습니다. data=c(0,1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8) 히스토그램을 그려봅시다. > myhist=hist(data,breaks=seq(0,8,by=2))> myhist$breaks[1] 0 2 4 6 8 $counts[1] 4 7 11 15 각 계급의 도수는 아래와 같습니다. 0~2 : 42~4 : 74~6.. 2020. 12. 8.
[R 시각화] 데이터프레임을 이용하여 boxplot 그리는 법 [R 시각화] 데이터프레임을 이용하여 boxplot 그리는 법 A,B,C 세 반 학생 30명의 성적 데이터가 있습니다. sample 함수로 임의추출하겠습니다. A=sample(0:100,10)B=sample(10:90,10)C=sample(20:80,10) 1열을 독립변수인 반이름, 2열을 종속변수를 점수로 하여 데이터프레임을 만들어줍니다. 독립변수 이름은 X로, 종속변수 이름은 Y로 지정합니다. mydf=data.frame(c(rep("A",length(A)), rep("B",length(B)), rep("C",length(C))), c(A,B,C)) colnames(mydf)=c("X","Y") 데이터는 아래와 같습니다. > mydf X Y1 A 722 A 13 A 324 A 165 A 146 A 2.. 2020. 9. 18.
[R시각화] 상자수염그림(boxplot) 그리는 방법 [R시각화] 상자수염그림(boxplot) 그리는 방법 상자수염그림은 분위수를 이용하여 그래프를 그리는 방식입니다. 아래와 같은 다섯개의 정보를 담고 있습니다. 0사분위수, 1사분위수, 2사분위수, 3사분위수, 4사분위수 영어로는 아래와 같이 나타냅니다. Q0, Q1, Q2, Q3, Q4 우리가 아는 용어를 이용하여 표현하면 아래와 같습니다. 최솟값, 1사분위수, 중앙값, 3사분위수, 최댓값 최솟값 : 0% 지점1사분위수 : 25% 지점중앙값 : 50% 지점3사분위수 : 75% 지점최댓값 : 100% 지점 가장 간단한 방법인 벡터를 이용하여 그려보겠습니다. #rnorm 함수를 이용하여 데이터생성M=rnorm(20,170,5)F=rnorm(20,160,5) boxplot(M,F) 결과는 아래와 같습니다. ... 2020. 9. 18.
[R 시각화] 3차원 산점도 그리는 방법 [R 시각화] 3차원 산점도 그리는 방법 scatterplot3d 는 3차원 산점도를 그리는 함수입니다. 먼저 라이브러리를 설치합니다. install.library("scatterplot3d") 라이브러리를 불러오고, 간단한 사용방법을 알아보겠습니다. 점 세개를 정의하고 그래프로 그려봅시다. library(scatterplot3d) x=c(1,2,3)y=c(4,5,6)z=c(2,4,2) scatterplot3d(x,y, xlim=c(0,10), ylim=c(0,10), zlim=c(0,5), xlab="X label", ylab="Y label", zlab="Z label", main="My plot", cex.main=2, cex.lab=1.5, color="red", pch=19, angle=40 ).. 2020. 8. 6.
반응형