일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 직장인자기계발
- 머신러닝
- Ai
- 독서리뷰
- 데이터 분석
- 방콕여행
- 태국여행
- 패스트캠퍼스
- 에어플로
- 빅데이터
- 데이터분석
- API
- 자동매매프로그램
- DAGs
- 직장인인강
- 통계분석
- 파이썬
- 파이썬을활용한시계열데이터분석A-Z올인원패키지
- 상관분석
- 패캠챌린지
- airflow
- 패스트캠퍼스후기
- correlation
- 분석
- 리뷰
- 데이터
- Python
- 딥러닝
- EDA
- 활성화함수
- Today
- Total
데이터를 기반으로
R 스터디 1일차 - Plot 본문
첫 번째 과제 Plot
스터디 첫 번째 과제는 plot 을 이용해보는 것이었습니다.
편의상 코드의 색은 파란색으로 하겠습니다다.
rm(list=ls())
기존에 있는 변수들이 있길래 지우고 시작했습니다.
자 이제 본격적으로 시작해보자!!
데이터 생성부터 시작해보겠습니다.
library(ggplot2)
#ggplot 패키지에 내재되어 있는 iris 데이터를 이용해 진행할 예정입니다.
data1<-iris$Sepal.Length
data2<-iris$Sepal.Width
data3<-iris$Petal.Length
data4<-iris$Petal.Width
#각각의 컬럼을 데이터 분할 했습니다.
plot(data1)
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMTkx/MDAxNTUxNjgyNzM0MzY1.mddmXVJS6PxBXkSr40pd5dB4siXbCc3gT6XVRKW7QKIg.4Sh-5mDpl4M864gxXT6xab2pIt1Q_5xGIw4cABfsN-cg.PNG.dbdlsgh77/image.png?type=w1)
Sepal.Length의 산점도 입니다.
plot(data1,pch=15)
#pch는 산점도에서 각각의 점의 모양을 바꿀 수 있습니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMzYg/MDAxNTUxNjgzODg5NDA3.Bb21hzQjAcdc-WwWSsRc7Htm-YUvQ-7suV6okbK0xk8g.tVBBdB5c9ntTPV5Shr2hhn678xXBGlHYs_kBYY7eDpMg.PNG.dbdlsgh77/image.png?type=w1)
pch의 숫자별 모양
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMTcz/MDAxNTUxNjgzODQyMjgx.-2S6agUBOwLeUxyEW0iPIcoxDwpSqNO45KlNGbAg11Yg.OYC64kbouCR6nkWqw-ufLyi9hsI-eqlmzUQTrZNE6swg.PNG.dbdlsgh77/image.png?type=w1)
pch=15로 설정하여 Sepal.Length의 산점도를 그렸습니다.
plot(data1,pch=20,cex=1)
#cex의 값이 클 수록 점이 커집니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMjM0/MDAxNTUxNjg0MTIxOTAy._mbrQ2snYqoIs2DmssHmmUexgfaK2-ImUQlRagFOyQEg.4h1Q3mpERYcEQh_xCHZiSmJJhrPgYUzqBXscNApaTnAg.PNG.dbdlsgh77/image.png?type=w1)
.
plot(data1,pch=20,cex=1,type="l")
#type=l 은 선 입니다. 밑을 보면 알파벳으로 타입을 설정할 수 있습니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMTU3/MDAxNTUxNjg0MjA1NTE3.nCidLs_HTqj6i5ieABfk80q6eY6eFt2O_WYhStC_-rcg.eS1PT2_2V_X5fB3kG8v45mk8amagvRHqV4SGOc0UZaUg.PNG.dbdlsgh77/image.png?type=w1)
type의 종류
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMjg1/MDAxNTUxNjg0MTcxNTk1.PLzAxYgWfhqHVG-A-kFh7wTcTJxkuKsaGSc5Bsq5xJIg.6gTeiY1WJJ7w--mkFzHMhZJhwQJejc1X8efFII9_QlQg.PNG.dbdlsgh77/image.png?type=w1)
type="l"
plot(data1,pch=20,cex=1,type="l",xlab="x",ylab="y")
# x축과 y축의 이름을 설정할 수 있습니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfODMg/MDAxNTUxNjg0Mzg3OTU0.QsEdhRPavf6Bd7lGHVpTnUYQgRV3YASOMaT1MnycE3Ig.8Ixyx_peNDtP1yCNmI05gN0CyJPACwKMuOqRKD7ii-0g.PNG.dbdlsgh77/image.png?type=w1)
x축과 y축의 이름 설정
plot(data1,pch=20,cex=1,type="o",xlab="x",ylab="y",main="Plot study")
# main은 상단의 제목을 설정할 수 있습니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMTk0/MDAxNTUxNjg0NDYyNzUx.uwKYSoe1CYuyHMvJ-vzWWGZxa8rx5Bv0n43xvFDN0uQg.nspyRqEUS1vxMXOBEINgW3pGUnCzLyq_hKf8wqtJtKgg.PNG.dbdlsgh77/image.png?type=w1)
abline(h=5,col="red")
#h는 가로선, v는 세로선을 그을 수 있고 값은 선을 그을 위치의 값을 의미합니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMTIg/MDAxNTUxNjg0NTA0ODUy.LFVJXNFf5J0PvBpuztupJMwctCE_Z1ogvXjuNd4RGfUg.WZYGM5_qtR51ddpNdhfTOJC7vQZE62JGoFboO7HRzPkg.PNG.dbdlsgh77/image.png?type=w1)
colors()
#R의 내재되어 있는 색은 총 657가지 입니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfNjEg/MDAxNTUxNjg0NTkxODE4.9fmK1M3dC2vNF6ESdWAdBKvF0yJxXwmzexowEqkdEG0g.uhQul1ovzPZLa4pJvNCFGG-2rf37xmIPsiFZl7QDq5cg.PNG.dbdlsgh77/image.png?type=w1)
abline(v=50,col="blue")
#위에 가로선 설명을 보시면 됩니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMjY3/MDAxNTUxNjg0NjI4MDA0.PeaoR0keo934IKlfN0kV0il0ZjfZ_S_Mw1guh-63Bugg.2EuBrXM0SKfa7qMzyXWFlBI-XS0G94v9WM_ij_LtV-Qg.PNG.dbdlsgh77/image.png?type=w1)
abline(a=4.5,b=0.02,col="green")
#a는 y절편, b는 기울기
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfODYg/MDAxNTUxNjg0NzA1NDM2.BixxmoGqjvOhvnDlwxLd16I16tQ2RdzI_TKczER-w_Ig.W4EN9H5IY-0M-qU1_Wi4AoMW7OK-NznZF1vLjzHkarMg.PNG.dbdlsgh77/image.png?type=w1)
plot(x=data4,y=data3, pch=20, cex=0.5, type="p", xlab="X ", ylab="y ", main="Plot study")
abline(lm(data3 ~ data4), col="red")
#회귀식 그릴 때 형태는 lm(y~x)
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfNDIg/MDAxNTUxNjg1MDA5NTE1.ElfaFSoiStkAYGBaJGA0nkGjM2T1yFHytUop5OTX7IYg.QRw2DTHMGKLcXQZePhqR-bl9Ix7VYZkOD_gtTnP6MnYg.PNG.dbdlsgh77/image.png?type=w1)
abline(lm(data3 ~ data4), col="red", lty=3)
# lty로 선의 유형 선택 가능
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfNDQg/MDAxNTUxNjg1MTY4MTMx.-EdnMUMlnZxyIyAkqmHFWS8qTgUKX0XylsqCmzGbjRsg.hIUaswfx2cp5ybhG8NRnW0-eIFcxuokf9dnVACWTIIAg.PNG.dbdlsgh77/image.png?type=w1)
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfNzMg/MDAxNTUxNjg1MTUzOTc5.CPIial6if9twssZ3yVMF8My76LBUyh_QdVWrWMp7oOwg.7qpzBjh5JxE_FaTTMGfYtaW-S76Rg6IRzat_vzQv7Okg.PNG.dbdlsgh77/image.png?type=w1)
par(mfrow=c(2,2))
plot(data1, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Sepal.Length")
plot(data2, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Sepal.Width")
plot(data3, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Petal.Length")
plot(data4, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Petal.Width")
#개인적으로 4개의 그림이면 2,2 가 더 이상적으로 보입니다.
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfNTgg/MDAxNTUxNjg1MjQxOTkz.SbhuxZJZ3jBigCAbkIz35yP9b_gNIQ2hug-DT3YooZ8g.khX_8EsYD8S0j8OsngJY_Y5ixJfhljqCHUX43IKW3lgg.PNG.dbdlsgh77/image.png?type=w1)
par(mfrow=c(1,1))
#다시 1개로 크게 보고 싶어서 이 코드를 썼지만 좀 더 간편한 코드가 있을 것 같다고 생각됩니다. 찾아봐야겠습니다.
plot(data1, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Sepal.Length")
par(new=TRUE) #그래프 겹쳐보이게 해줍니다.
plot(data3, pch=20, cex=1, col="red", type="p", xlab="X ", ylab="y ", main="Petal.Length")
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfOTUg/MDAxNTUxNjg1MzM5OTM4.DhD782qXGRuZEv5cJASgGvNZ26-CsvfDsjv4QCIQ77Yg.FUOVrPmLVh0DUio3qrpAZPw6OWIRUXTSLqM8DugDvTIg.PNG.dbdlsgh77/image.png?type=w1)
#그리고 나서 확인해보니 타이틀과 y축의 값들이 일치하지 않아 기준이 모호해 두 산점도의 비교가 힘들다고 생각됩니다.
#그래서 y축의 값들을 통일시키려 합니다. ylim 을 이용해서!
plot(data1, pch=20, cex=1, type="p",
xlab="X ", ylab="y ", main="",
ylim=c(1,7.5))
par(new=TRUE)
plot(data3, pch=20, cex=1, type="p",
xlab="X ", ylab="y ", main=" ", col="red",
ylim=c(1,7.5))
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMjUw/MDAxNTUxNjg1NDQ4MjUy._yEOVGGmdWuDaTkRYcUpbVCLJfMPo87Mndy-cWOoVBMg.z66VNgUQnQgBJ-9HiCXvGSaKASy7bY7QWH8bEZfrKgYg.PNG.dbdlsgh77/image.png?type=w1)
# y축의 값을 통일하고 보니 아까와는 다른 그림이 나왔습니다. 첫 번째걸로 그대로 해석을 했다면 오류가 있었을 것으로 생각됩니다.
# 그림 저장에 앞서 저장 위치를 확인해 보았습니다!
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfMTA2/MDAxNTUxNjg2MzA4NTY0.2XcmG_IKTQ4aMOv6XsSXmmJsJgxbdQLuFB_DwnKEKwQg.Pg9Isxpadi1B_F_6qpM1xQqxNbJrXv_BFGFvSU33-3Yg.PNG.dbdlsgh77/image.png?type=w1)
png("plot down.png",width = 950, height = 650,unit="px")
par(mfrow=c(1,1))
plot(data1, pch=20, cex=1, type="p",
xlab="X ", ylab="y ", main="",
ylim=c(1,7.5))
par(new=TRUE)
plot(data3, pch=20, cex=1, type="p",
xlab="X ", ylab="y ", main=" ", col="red",
ylim=c(1,7.5))
dev.off()
![](https://blogfiles.pstatic.net/MjAxOTAzMDRfNjEg/MDAxNTUxNjg2NDU3OTA3.E1zGc0fRhhW-vC1hMYOt1bi32tkn4-phE4bjSPk-acog.t2obC1vfSDpGCYcb-CyKvnnCy61C0BmoS27fI3AztEgg.PNG.dbdlsgh77/image.png?type=w1)
#png 파일로 저장이 되었습니다.
#이 부분 부터는 번외라고 하셔서 돌려보았지만 좀 더 이해하기 위해 더 공부를 해봐야할 것 같습니다!
#함수 적용
trend_data <- function(x) {
# sapply를 사용해 data가 숫자 인지 Check를 한다.
numeric_test <- sapply(x,is.numeric)
# 이 숫자들의 위치를 찾는다.
numeric_index<- which(numeric_test)
# 숫자들의 위치를 다시 조합하여 숫자들만 있는 data set을 만든다.
numeric_data <- x[,numeric_index]
# 이를 시각화 할때 컬럼의 이름을 파학하기 위해 colnamea_data라고 저장해준다.
colname_data <- colnames(numeric_data)
# par(mfrow=c(행,열) 행, 열을 표현할것인데 1~16개의 컬럼까지 모두 커버 할 수 있도록 다음과 같이 표현을 할 것이다.
if(ncol(numeric_data) == 1) {
# 컬럼 1개 = 1행 1열
low_count <- 1
col_count <- 1
} else if(ncol(numeric_data) == 2) {
# 컬럼 2개 = 1행 2열
low_count <- 1
col_count <- 2
} else if(ncol(numeric_data) == 3) {
# 컬럼 3개 = 1행 3열
low_count <- 1
col_count <- 3
} else if(ncol(numeric_data) == 4) {
# 컬럼 4개 = 2행 2열
low_count <- 2
col_count <- 2
} else if(ncol(numeric_data) %in% c(5:6)) {
# 컬럼 5~6개 = 2행 3열
low_count <- 2
col_count <- 3
} else if(ncol(numeric_data) %in% c(7:9)) {
# 컬럼 7~9개 = 3행 3열
low_count <- 3
col_count <- 3
} else if(ncol(numeric_data) %in% c(10:12)) {
# 컬럼 10~12개 = 3행 4열
low_count <- 3
col_count <- 4
} else if(ncol(numeric_data) %in% c(13:16)) {
# 컬럼 13~16개 = 4행 4열
low_count <- 4
col_count <- 4
}
par(mfrow=c(low_count,col_count))
for(i in numeric_index) {
plot(numeric_data[,i], pch=20,ylab="", cex=1, main=colname_data[i])
}
}
trend_data(cars)
trend_data(iris)
------------------------------------------------------------------------------------------------------------------------------------------------------------------
'스터디 > R 온라인 스터디' 카테고리의 다른 글
R 스터디 4일차 - 시각화!!(feat. ggplot) (0) | 2019.04.29 |
---|---|
R 스터디 3일차 - 다양한 시도와 접근!(중국집&피자) (0) | 2019.03.23 |
R 스터디 2일차 - 데이터 확인, 데이터 다각도로 보기! (0) | 2019.03.12 |