그래파

# 그래프 종류
# 데카르트 방식 : plot(x,y) // 대부분 이 방식을 씀
# 수식기반 방식 : plot(x~y)
plot(c(1:5))
plot(c(2,2,2,2,2))
# 하나면 x는 1씩 증가, y는 벡터의 값
plot(1:3, 3:1)
# 두개면 앞 x, 뒤 y
plot(1:3, 3:1, xlim = c(1,10), ylim = c(1,5))
# x와 y 값의 리밋값을 설정
plot(1:3,3:1,
     xlim=c(1,10), ylim = c(1,5),
     xlab='x축',
     ylab='y축',
     main='테스트'
     )
# type="p" 점(디폴트)
# 1 선, b 점과선, c b에서 점생략
# o 점과선 중첩, h점에서 x축까지 수직
# 라인타입
# lty = 0, lty = "blank" 투명선
# lty = 1, lty = "solid" 실선
# lty = 3, lty = "dotted" 점선
# 색깔
# col = "red"
# 배경색 bg="yellow"
# 선의 굵기 lwd="2"
# 점이나 문자의 굵기 cex = "3"
target <- round(runif(5,100,150),0)
plot(
  target,
  type = "0",
  col = "red",
  ylim = c(0,200),
  axes =F, #
  ann = F
)

axis(
  1, # x축
  at=1:5,
  lab = c('월','화','수','목','금')
)  
axis(
  2, # y축
  at=1:5
)
title(
  main = '과일',
  col.main = 'red',
  font.main = 4
)
title(
  xlab = '요일',
  col.lab = 'black'
)
title(
  ylab = '가격',
  col.lab = 'blue'
)

# multi graph
# par(mflow = c(nr,nc))
# nr = number of row
# nc = number of col

target <- round(runif(5,100,150),0)
par(mfrow=c(1,3))
plot(target,type = 'o') # 선+점
plot(target,type = 's') # 계단식
plot(target,type = 'l') # 꺾은선


target <- round(runif(5,100,150),0)
par(mfrow=c(1,3))
pie(target) # 원형
plot(target,type = 'o')
barplot(target) # 막대


par(mfrow=c(1,1))
t1 <- c(1,2,3,4,5)
t2 <- c(5,4,3,2,1)
t3 <- c(3,4,5,6,7)
plot(
  t1, type = 's', col='red', ylim = c(1,5)
)
par(new=T) # 중복허용
plot(
  t2, type = 'o', col='blue', ylim = c(1,5)
)
par(new=T)
plot(
  t3, type = 'l', col='green'
)



# legend 예제
t1 <- c(1,2,3,4,5)
t2 <- c(5,4,3,2,1)
t3 <- c(3,4,5,6,7)
plot(
  t1, type = 's', col='red', ylim = c(1,10)
)
lines(
  t2, type = 'o', col='blue', ylim = c(1,5)
)
lines(
  t3, type = 'l', col='green', ylim = c(1,15)
)
legend(
  4, #x축의 위치
  9, #y축의 위치
  c("샘플1","샘플2","샘플3"),
  cex = 0.9, #글자크기
  col = c('red','blue','green'),
  lty = 1
)

# 막대그래프
barplot(1:5)
# 수평방향
barplot(1:5,horiz=T)


# 과일판매량 막대그래프로 표현
banana <- round(runif(5,100,150),0)
cherry <- round(runif(5,100,150),0)
orenge <- round(runif(5,100,150),0)
fruit <- data.frame(
  바나나 = banana,
  체리 = cherry,
  오렌지 = orenge
)
day <- c('월','화','수','목','금')
barplot(
  as.matrix(fruit), ### 반드시 df -> matrix 로 전환해서 그려야 함
  main = '과일판매량',
  beside = T,
  col = rainbow(nrow(fruit)),
  ylim = c(0,400)
)
legend(
  14,400,day,cex = 0.8,
  fill = rainbow(nrow(fruit))
)


# 과일판매량 막대그래프(2)로 표현
banana <- round(runif(5,100,150),0)
cherry <- round(runif(5,100,150),0)
orenge <- round(runif(5,100,150),0)
fruit <- data.frame(
  바나나 = banana,
  체리 = cherry,
  오렌지 = orenge
)
day <- c('월','화','수','목','금')
barplot(
  t(fruit), # transform 행과 열을 바꿈
  main = '과일판매량',
  col = rainbow(nrow(fruit)),
  ylim = c(0,600),
  space = 0.1,
  cex.axis = 0.8,
  las = 1,
  names.arg = day,
  cex = 0.8
)
legend(
  0.2,600,names(fruit),cex = 0.8,
  fill = rainbow(nrow(fruit))
)

# 오렌지 한 과일의 판매량 보기
orenge <- round(runif(5,100,200),0)
day <- c('월','화','수','목','금')
color <- c()
# for(조건){}
for(i in (1:5)){
  if(orenge[i]>=180){
    color <- c(color, 'red')
  } else if(orenge[i]>=150){
    color <- c(color, 'yellow')
  } else{
    color <- c(color, 'green')
  }
}
barplot(
  orenge, # y축
  main = '오렌지판매량',
  col = color,
  ylim = c(0,200),
  names.arg = day # x축
  )
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIOq3uOuemO2MjA0KDQpgYGB7cn0NCiMg6re4656Y7ZSEIOyiheulmA0KIyDrjbDsubTrpbTtirgg67Cp7IudIDogcGxvdCh4LHkpIC8vIOuMgOu2gOu2hCDsnbQg67Cp7Iud7J2EIOyUgA0KIyDsiJjsi53quLDrsJgg67Cp7IudIDogcGxvdCh4fnkpDQpwbG90KGMoMTo1KSkNCnBsb3QoYygyLDIsMiwyLDIpKQ0KIyDtlZjrgpjrqbQgeOuKlCAx7JSpIOymneqwgCwgeeuKlCDrsqHthLDsnZgg6rCSDQpwbG90KDE6MywgMzoxKQ0KIyDrkZDqsJzrqbQg7JWeIHgsIOuSpCB5DQpwbG90KDE6MywgMzoxLCB4bGltID0gYygxLDEwKSwgeWxpbSA9IGMoMSw1KSkNCiMgeOyZgCB5IOqwkuydmCDrpqzrsIvqsJLsnYQg7ISk7KCVDQpwbG90KDE6MywzOjEsDQogICAgIHhsaW09YygxLDEwKSwgeWxpbSA9IGMoMSw1KSwNCiAgICAgeGxhYj0neOy2lScsDQogICAgIHlsYWI9J3nstpUnLA0KICAgICBtYWluPSfthYzsiqTtirgnDQogICAgICkNCiMgdHlwZT0icCIg7KCQKOuUlO2PtO2KuCkNCiMgMSDshKAsIGIg7KCQ6rO87ISgLCBjIGLsl5DshJwg7KCQ7IOd6561DQojIG8g7KCQ6rO87ISgIOykkeyyqSwgaOygkOyXkOyEnCB47LaV6rmM7KeAIOyImOyngQ0KIyDrnbzsnbjtg4DsnoUNCiMgbHR5ID0gMCwgbHR5ID0gImJsYW5rIiDtiKzrqoXshKANCiMgbHR5ID0gMSwgbHR5ID0gInNvbGlkIiDsi6TshKANCiMgbHR5ID0gMywgbHR5ID0gImRvdHRlZCIg7KCQ7ISgDQojIOyDieq5lA0KIyBjb2wgPSAicmVkIg0KIyDrsLDqsr3sg4kgYmc9InllbGxvdyINCiMg7ISg7J2YIOq1teq4sCBsd2Q9IjIiDQojIOygkOydtOuCmCDrrLjsnpDsnZgg6rW16riwIGNleCA9ICIzIg0KdGFyZ2V0IDwtIHJvdW5kKHJ1bmlmKDUsMTAwLDE1MCksMCkNCnBsb3QoDQogIHRhcmdldCwNCiAgdHlwZSA9ICIwIiwNCiAgY29sID0gInJlZCIsDQogIHlsaW0gPSBjKDAsMjAwKSwNCiAgYXhlcyA9RiwgIw0KICBhbm4gPSBGDQopDQoNCmF4aXMoDQogIDEsICMgeOy2lQ0KICBhdD0xOjUsDQogIGxhYiA9IGMoJ+yblCcsJ+2ZlCcsJ+yImCcsJ+uqqScsJ+q4iCcpDQopICANCmF4aXMoDQogIDIsICMgeey2lQ0KICBhdD0xOjUNCikNCnRpdGxlKA0KICBtYWluID0gJ+qzvOydvCcsDQogIGNvbC5tYWluID0gJ3JlZCcsDQogIGZvbnQubWFpbiA9IDQNCikNCnRpdGxlKA0KICB4bGFiID0gJ+yalOydvCcsDQogIGNvbC5sYWIgPSAnYmxhY2snDQopDQp0aXRsZSgNCiAgeWxhYiA9ICfqsIDqsqknLA0KICBjb2wubGFiID0gJ2JsdWUnDQopDQoNCiMgbXVsdGkgZ3JhcGgNCiMgcGFyKG1mbG93ID0gYyhucixuYykpDQojIG5yID0gbnVtYmVyIG9mIHJvdw0KIyBuYyA9IG51bWJlciBvZiBjb2wNCg0KdGFyZ2V0IDwtIHJvdW5kKHJ1bmlmKDUsMTAwLDE1MCksMCkNCnBhcihtZnJvdz1jKDEsMykpDQpwbG90KHRhcmdldCx0eXBlID0gJ28nKSAjIOyEoCvsoJANCnBsb3QodGFyZ2V0LHR5cGUgPSAncycpICMg6rOE64uo7IudDQpwbG90KHRhcmdldCx0eXBlID0gJ2wnKSAjIOq6vuydgOyEoA0KDQoNCnRhcmdldCA8LSByb3VuZChydW5pZig1LDEwMCwxNTApLDApDQpwYXIobWZyb3c9YygxLDMpKQ0KcGllKHRhcmdldCkgIyDsm5DtmJUNCnBsb3QodGFyZ2V0LHR5cGUgPSAnbycpDQpiYXJwbG90KHRhcmdldCkgIyDrp4nrjIANCg0KDQpwYXIobWZyb3c9YygxLDEpKQ0KdDEgPC0gYygxLDIsMyw0LDUpDQp0MiA8LSBjKDUsNCwzLDIsMSkNCnQzIDwtIGMoMyw0LDUsNiw3KQ0KcGxvdCgNCiAgdDEsIHR5cGUgPSAncycsIGNvbD0ncmVkJywgeWxpbSA9IGMoMSw1KQ0KKQ0KcGFyKG5ldz1UKSAjIOykkeuzte2XiOyaqQ0KcGxvdCgNCiAgdDIsIHR5cGUgPSAnbycsIGNvbD0nYmx1ZScsIHlsaW0gPSBjKDEsNSkNCikNCnBhcihuZXc9VCkNCnBsb3QoDQogIHQzLCB0eXBlID0gJ2wnLCBjb2w9J2dyZWVuJw0KKQ0KDQoNCg0KIyBsZWdlbmQg7JiI7KCcDQp0MSA8LSBjKDEsMiwzLDQsNSkNCnQyIDwtIGMoNSw0LDMsMiwxKQ0KdDMgPC0gYygzLDQsNSw2LDcpDQpwbG90KA0KICB0MSwgdHlwZSA9ICdzJywgY29sPSdyZWQnLCB5bGltID0gYygxLDEwKQ0KKQ0KbGluZXMoDQogIHQyLCB0eXBlID0gJ28nLCBjb2w9J2JsdWUnLCB5bGltID0gYygxLDUpDQopDQpsaW5lcygNCiAgdDMsIHR5cGUgPSAnbCcsIGNvbD0nZ3JlZW4nLCB5bGltID0gYygxLDE1KQ0KKQ0KbGVnZW5kKA0KICA0LCAjeOy2leydmCDsnITsuZgNCiAgOSwgI3nstpXsnZgg7JyE7LmYDQogIGMoIuyDmO2UjDEiLCLsg5jtlIwyIiwi7IOY7ZSMMyIpLA0KICBjZXggPSAwLjksICPquIDsnpDtgazquLANCiAgY29sID0gYygncmVkJywnYmx1ZScsJ2dyZWVuJyksDQogIGx0eSA9IDENCikNCg0KIyDrp4nrjIDqt7jrnpjtlIQNCmJhcnBsb3QoMTo1KQ0KIyDsiJjtj4nrsKntlqUNCmJhcnBsb3QoMTo1LGhvcml6PVQpDQoNCg0KIyDqs7zsnbztjJDrp6Trn4kg66eJ64yA6re4656Y7ZSE66GcIO2RnO2YhA0KYmFuYW5hIDwtIHJvdW5kKHJ1bmlmKDUsMTAwLDE1MCksMCkNCmNoZXJyeSA8LSByb3VuZChydW5pZig1LDEwMCwxNTApLDApDQpvcmVuZ2UgPC0gcm91bmQocnVuaWYoNSwxMDAsMTUwKSwwKQ0KZnJ1aXQgPC0gZGF0YS5mcmFtZSgNCiAg67CU64KY64KYID0gYmFuYW5hLA0KICDssrTrpqwgPSBjaGVycnksDQogIOyYpOugjOyngCA9IG9yZW5nZQ0KKQ0KZGF5IDwtIGMoJ+yblCcsJ+2ZlCcsJ+yImCcsJ+uqqScsJ+q4iCcpDQpiYXJwbG90KA0KICBhcy5tYXRyaXgoZnJ1aXQpLCAjIyMg67CY65Oc7IucIGRmIC0+IG1hdHJpeCDroZwg7KCE7ZmY7ZW07IScIOq3uOugpOyVvCDtlagNCiAgbWFpbiA9ICfqs7zsnbztjJDrp6Trn4knLA0KICBiZXNpZGUgPSBULA0KICBjb2wgPSByYWluYm93KG5yb3coZnJ1aXQpKSwNCiAgeWxpbSA9IGMoMCw0MDApDQopDQpsZWdlbmQoDQogIDE0LDQwMCxkYXksY2V4ID0gMC44LA0KICBmaWxsID0gcmFpbmJvdyhucm93KGZydWl0KSkNCikNCg0KDQojIOqzvOydvO2MkOunpOufiSDrp4nrjIDqt7jrnpjtlIQoMinroZwg7ZGc7ZiEDQpiYW5hbmEgPC0gcm91bmQocnVuaWYoNSwxMDAsMTUwKSwwKQ0KY2hlcnJ5IDwtIHJvdW5kKHJ1bmlmKDUsMTAwLDE1MCksMCkNCm9yZW5nZSA8LSByb3VuZChydW5pZig1LDEwMCwxNTApLDApDQpmcnVpdCA8LSBkYXRhLmZyYW1lKA0KICDrsJTrgpjrgpggPSBiYW5hbmEsDQogIOyytOumrCA9IGNoZXJyeSwNCiAg7Jik66CM7KeAID0gb3JlbmdlDQopDQpkYXkgPC0gYygn7JuUJywn7ZmUJywn7IiYJywn66qpJywn6riIJykNCmJhcnBsb3QoDQogIHQoZnJ1aXQpLCAjIHRyYW5zZm9ybSDtlonqs7wg7Je07J2EIOuwlOq/iA0KICBtYWluID0gJ+qzvOydvO2MkOunpOufiScsDQogIGNvbCA9IHJhaW5ib3cobnJvdyhmcnVpdCkpLA0KICB5bGltID0gYygwLDYwMCksDQogIHNwYWNlID0gMC4xLA0KICBjZXguYXhpcyA9IDAuOCwNCiAgbGFzID0gMSwNCiAgbmFtZXMuYXJnID0gZGF5LA0KICBjZXggPSAwLjgNCikNCmxlZ2VuZCgNCiAgMC4yLDYwMCxuYW1lcyhmcnVpdCksY2V4ID0gMC44LA0KICBmaWxsID0gcmFpbmJvdyhucm93KGZydWl0KSkNCikNCg0KIyDsmKTroIzsp4Ag7ZWcIOqzvOydvOydmCDtjJDrp6Trn4kg67O06riwDQpvcmVuZ2UgPC0gcm91bmQocnVuaWYoNSwxMDAsMjAwKSwwKQ0KZGF5IDwtIGMoJ+yblCcsJ+2ZlCcsJ+yImCcsJ+uqqScsJ+q4iCcpDQpjb2xvciA8LSBjKCkNCiMgZm9yKOyhsOqxtCl7fQ0KZm9yKGkgaW4gKDE6NSkpew0KICBpZihvcmVuZ2VbaV0+PTE4MCl7DQogICAgY29sb3IgPC0gYyhjb2xvciwgJ3JlZCcpDQogIH0gZWxzZSBpZihvcmVuZ2VbaV0+PTE1MCl7DQogICAgY29sb3IgPC0gYyhjb2xvciwgJ3llbGxvdycpDQogIH0gZWxzZXsNCiAgICBjb2xvciA8LSBjKGNvbG9yLCAnZ3JlZW4nKQ0KICB9DQp9DQpiYXJwbG90KA0KICBvcmVuZ2UsICMgeey2lQ0KICBtYWluID0gJ+yYpOugjOyngO2MkOunpOufiScsDQogIGNvbCA9IGNvbG9yLA0KICB5bGltID0gYygwLDIwMCksDQogIG5hbWVzLmFyZyA9IGRheSAjIHjstpUNCiAgKQ0KDQoNCmBgYA0K