Базова графіка та аналіз даних

Ми розглянемо базову графіку, яка дозволяє будувати складні графіки (але трохи довше ніж інші способи).

Основний принцип побудови графіків в R: 1. спочатку більш загальні структури; 2. потім більше деталізовані, шар за шаром.

По-перше, команда створення нового графіку.

plot.new()

При створенні нового графіка ми можемо вказати границі (маштаб) за осями, ти їх місце розташування.

plot.new()
plot.window(xlim = c(0,10),ylim = c(0,5))
axis(1)
axis(2)

Команда axis() допускає наступне розширення:

plot.new()
plot.window(xlim = c(0,5),ylim = c(0,5))
axis(1, at = 0:5, labels = c("A","B","C","D","E","F"))
axis(2)

Ще один параметр керує напрямком розташування

plot.new()
plot.window(xlim = c(0,2),ylim = c(0,5))
axis(1, at = 0:2, labels = c("Андрій","Юля","Міша"), las = 2)
axis(2)
points(0:2,c(5,4.5,3))

Тепер змінимо колір і шрифт

Кольори та шрифт регулюються наступними параметрами:

col = "red" ("green", "blue") - колір осей (і відміток)
col.axis = "red" ("green", "blue") - колір позначок
font.axis =                       - шрифт позначок
  1 - normal  
  2 - bold
  3 - italic
  4 - italic-bold
plot.new()
plot.window(xlim = c(0,2),ylim = c(0,5))
axis(1, at = 0:2, labels = c("Андрій","Юля","Міша"), las = 2, col.axis = "red", font.axis = 4)
axis(2, col = "blue", font.axis = 2)
points(0:2,c(5,4.5,3))

Підписи до графіка створюються наступною функцією

title(main = "", sub = "", xlab = "", ylab = "")
plot.new()
plot.window(xlim = c(0,2),ylim = c(0,5))
axis(1, at = 0:2, labels = c("Андрій","Юля","Міша"), las = 2, col.axis = "red", font.axis = 4)
axis(2, col = "blue", font.axis = 2)
points(0:2,c(5,4.5,3))
title(main = "Успішність слухачів",
      sub = "графік створено 29.10.2017",
      xlab = "слухачі",
      ylab = "оцінки")

Кожен з цих чотирьох елементів також можна розфарбувати.

font.main
col.main
cex.main

font.sub
col.sub
cex.sub

font.lab
col.lab
cex.lab

Завдання 1.

Іноді корисно намалювати прямокутник навколо графіка, тоді використовується функція box()

Тепер подивимось як наносити точки, лінії, відрізки.

Точки наносяться за допомогою функції points()

points(x = , y = , pch = int, col = str)

Ще додамо, що колір можна змінювати. Також можна заливати порожні форми 21 - 25 іншим кольором за допомогою параметра bg

plot.new()
plot.window(xlim = c(0,6),ylim = c(0,2))
points(1,1,pch = 21, col = "blue", bg = "grey")
text(1,1.5,"21")
points(2,1,pch = 22, col = "brown", bg = "red")
text(2,1.5,"22")
points(3,1,pch = 23, col = "red", bg = "yellow")
text(3,1.5,"23")
points(4,1,pch = 24, col = "blue", bg = "orange")
text(4,1.5,"24")
points(5,1,pch = 25, col = "green", bg = "yellow")
text(5,1.5,"25")

Тепер розглянемо лінії. Лінії додаються командою:

lines(x, y, lty = str, lwd = num, col = str)

lty - тип лінії: "blank", "solid", "dashed", "dotted", "dotdash", "longdash", "twodash"

lwd - товщина лінії  

Ми вже використовували трохи іншу форму (більш просту)

lines(x, y, type = str, col = str) де
тип - "p" точки, "l" лінії, "b" точки і лінії, "c" порожні точки з'єднані лініями, "o" точки, що перетинаються лініями, "s" та "S" для сходчастих функцій і "h" для прямокутників (як у гістограмі)

Завдання 2.

Але тепер ми можемо налаштовувати більш точно

plot.new()
plot.window(xlim = c(0,3),ylim = c(0,5))
axis(1, at = 0:3, 
     labels = c("Андрій","Юля","Міша","Аріна"), 
     col = "green", 
     col.axis = "blue", font.axis = 4)
axis(2, col = "green", font.axis = 2)
lines(0:3,c(5,4.5,3,3.5),lty = "solid", lwd = 2, col = "blue")
lines(0:3,c(3,2.5,1,3),lty = "dashed", lwd = 4, col = "green")
lines(0:3,c(2,3.5,4,4.5),lty = "dotdash", lwd = 6, col = "red")
title(main = "Успішність слухачів",
      font.main = 4,
      col.main = "blue",
      cex.main = 1.5,
      sub = "графік створено 29.10.2017",
      cex.sub = 0.5,
      xlab = "слухачі",
      ylab = "оцінки",
      col.lab = "blue",
      font.lab = 2)

Останній графічний елемент, який ми пройдемо сьогодні це відрізок.

segments(x0, y0, x1, y1) 
всі інші параметри як у лініях
plot.new()
plot.window(xlim = c(-1,1),ylim = c(-1,1))
axis(1)
axis(2)
segments(0,0,1,1)

Побудуємо розетки:

n <- 7
theta <- seq(0,2*pi,length = n)
x <- sin(theta)
y <- cos(theta)
v1 <- rep(1:n,n)
v2 <- rep(1:n,rep(n,n))
plot.new()
plot.window(xlim = c(-1,1),ylim = c(-1,1),asp = 1)
segments(x[v1],y[v1],x[v2],y[v2],col="blue")

n <- 17
theta <- seq(0,2*pi,length = n)
x <- 3*sin(theta)
y <- 0.5*cos(theta)
v1 <- rep(1:n,n)
v2 <- rep(1:n,rep(n,n))
plot.new()
plot.window(xlim = c(-2,2),ylim = c(-3,3),asp = 1)
segments(x[v1],y[v1],y[v2],x[v2],col="red")

Щоб отримати всі можливі кольори потрібно виконати команду

colors()
##   [1] "white"                "aliceblue"            "antiquewhite"        
##   [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
##   [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
##  [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
##  [13] "azure"                "azure1"               "azure2"              
##  [16] "azure3"               "azure4"               "beige"               
##  [19] "bisque"               "bisque1"              "bisque2"             
##  [22] "bisque3"              "bisque4"              "black"               
##  [25] "blanchedalmond"       "blue"                 "blue1"               
##  [28] "blue2"                "blue3"                "blue4"               
##  [31] "blueviolet"           "brown"                "brown1"              
##  [34] "brown2"               "brown3"               "brown4"              
##  [37] "burlywood"            "burlywood1"           "burlywood2"          
##  [40] "burlywood3"           "burlywood4"           "cadetblue"           
##  [43] "cadetblue1"           "cadetblue2"           "cadetblue3"          
##  [46] "cadetblue4"           "chartreuse"           "chartreuse1"         
##  [49] "chartreuse2"          "chartreuse3"          "chartreuse4"         
##  [52] "chocolate"            "chocolate1"           "chocolate2"          
##  [55] "chocolate3"           "chocolate4"           "coral"               
##  [58] "coral1"               "coral2"               "coral3"              
##  [61] "coral4"               "cornflowerblue"       "cornsilk"            
##  [64] "cornsilk1"            "cornsilk2"            "cornsilk3"           
##  [67] "cornsilk4"            "cyan"                 "cyan1"               
##  [70] "cyan2"                "cyan3"                "cyan4"               
##  [73] "darkblue"             "darkcyan"             "darkgoldenrod"       
##  [76] "darkgoldenrod1"       "darkgoldenrod2"       "darkgoldenrod3"      
##  [79] "darkgoldenrod4"       "darkgray"             "darkgreen"           
##  [82] "darkgrey"             "darkkhaki"            "darkmagenta"         
##  [85] "darkolivegreen"       "darkolivegreen1"      "darkolivegreen2"     
##  [88] "darkolivegreen3"      "darkolivegreen4"      "darkorange"          
##  [91] "darkorange1"          "darkorange2"          "darkorange3"         
##  [94] "darkorange4"          "darkorchid"           "darkorchid1"         
##  [97] "darkorchid2"          "darkorchid3"          "darkorchid4"         
## [100] "darkred"              "darksalmon"           "darkseagreen"        
## [103] "darkseagreen1"        "darkseagreen2"        "darkseagreen3"       
## [106] "darkseagreen4"        "darkslateblue"        "darkslategray"       
## [109] "darkslategray1"       "darkslategray2"       "darkslategray3"      
## [112] "darkslategray4"       "darkslategrey"        "darkturquoise"       
## [115] "darkviolet"           "deeppink"             "deeppink1"           
## [118] "deeppink2"            "deeppink3"            "deeppink4"           
## [121] "deepskyblue"          "deepskyblue1"         "deepskyblue2"        
## [124] "deepskyblue3"         "deepskyblue4"         "dimgray"             
## [127] "dimgrey"              "dodgerblue"           "dodgerblue1"         
## [130] "dodgerblue2"          "dodgerblue3"          "dodgerblue4"         
## [133] "firebrick"            "firebrick1"           "firebrick2"          
## [136] "firebrick3"           "firebrick4"           "floralwhite"         
## [139] "forestgreen"          "gainsboro"            "ghostwhite"          
## [142] "gold"                 "gold1"                "gold2"               
## [145] "gold3"                "gold4"                "goldenrod"           
## [148] "goldenrod1"           "goldenrod2"           "goldenrod3"          
## [151] "goldenrod4"           "gray"                 "gray0"               
## [154] "gray1"                "gray2"                "gray3"               
## [157] "gray4"                "gray5"                "gray6"               
## [160] "gray7"                "gray8"                "gray9"               
## [163] "gray10"               "gray11"               "gray12"              
## [166] "gray13"               "gray14"               "gray15"              
## [169] "gray16"               "gray17"               "gray18"              
## [172] "gray19"               "gray20"               "gray21"              
## [175] "gray22"               "gray23"               "gray24"              
## [178] "gray25"               "gray26"               "gray27"              
## [181] "gray28"               "gray29"               "gray30"              
## [184] "gray31"               "gray32"               "gray33"              
## [187] "gray34"               "gray35"               "gray36"              
## [190] "gray37"               "gray38"               "gray39"              
## [193] "gray40"               "gray41"               "gray42"              
## [196] "gray43"               "gray44"               "gray45"              
## [199] "gray46"               "gray47"               "gray48"              
## [202] "gray49"               "gray50"               "gray51"              
## [205] "gray52"               "gray53"               "gray54"              
## [208] "gray55"               "gray56"               "gray57"              
## [211] "gray58"               "gray59"               "gray60"              
## [214] "gray61"               "gray62"               "gray63"              
## [217] "gray64"               "gray65"               "gray66"              
## [220] "gray67"               "gray68"               "gray69"              
## [223] "gray70"               "gray71"               "gray72"              
## [226] "gray73"               "gray74"               "gray75"              
## [229] "gray76"               "gray77"               "gray78"              
## [232] "gray79"               "gray80"               "gray81"              
## [235] "gray82"               "gray83"               "gray84"              
## [238] "gray85"               "gray86"               "gray87"              
## [241] "gray88"               "gray89"               "gray90"              
## [244] "gray91"               "gray92"               "gray93"              
## [247] "gray94"               "gray95"               "gray96"              
## [250] "gray97"               "gray98"               "gray99"              
## [253] "gray100"              "green"                "green1"              
## [256] "green2"               "green3"               "green4"              
## [259] "greenyellow"          "grey"                 "grey0"               
## [262] "grey1"                "grey2"                "grey3"               
## [265] "grey4"                "grey5"                "grey6"               
## [268] "grey7"                "grey8"                "grey9"               
## [271] "grey10"               "grey11"               "grey12"              
## [274] "grey13"               "grey14"               "grey15"              
## [277] "grey16"               "grey17"               "grey18"              
## [280] "grey19"               "grey20"               "grey21"              
## [283] "grey22"               "grey23"               "grey24"              
## [286] "grey25"               "grey26"               "grey27"              
## [289] "grey28"               "grey29"               "grey30"              
## [292] "grey31"               "grey32"               "grey33"              
## [295] "grey34"               "grey35"               "grey36"              
## [298] "grey37"               "grey38"               "grey39"              
## [301] "grey40"               "grey41"               "grey42"              
## [304] "grey43"               "grey44"               "grey45"              
## [307] "grey46"               "grey47"               "grey48"              
## [310] "grey49"               "grey50"               "grey51"              
## [313] "grey52"               "grey53"               "grey54"              
## [316] "grey55"               "grey56"               "grey57"              
## [319] "grey58"               "grey59"               "grey60"              
## [322] "grey61"               "grey62"               "grey63"              
## [325] "grey64"               "grey65"               "grey66"              
## [328] "grey67"               "grey68"               "grey69"              
## [331] "grey70"               "grey71"               "grey72"              
## [334] "grey73"               "grey74"               "grey75"              
## [337] "grey76"               "grey77"               "grey78"              
## [340] "grey79"               "grey80"               "grey81"              
## [343] "grey82"               "grey83"               "grey84"              
## [346] "grey85"               "grey86"               "grey87"              
## [349] "grey88"               "grey89"               "grey90"              
## [352] "grey91"               "grey92"               "grey93"              
## [355] "grey94"               "grey95"               "grey96"              
## [358] "grey97"               "grey98"               "grey99"              
## [361] "grey100"              "honeydew"             "honeydew1"           
## [364] "honeydew2"            "honeydew3"            "honeydew4"           
## [367] "hotpink"              "hotpink1"             "hotpink2"            
## [370] "hotpink3"             "hotpink4"             "indianred"           
## [373] "indianred1"           "indianred2"           "indianred3"          
## [376] "indianred4"           "ivory"                "ivory1"              
## [379] "ivory2"               "ivory3"               "ivory4"              
## [382] "khaki"                "khaki1"               "khaki2"              
## [385] "khaki3"               "khaki4"               "lavender"            
## [388] "lavenderblush"        "lavenderblush1"       "lavenderblush2"      
## [391] "lavenderblush3"       "lavenderblush4"       "lawngreen"           
## [394] "lemonchiffon"         "lemonchiffon1"        "lemonchiffon2"       
## [397] "lemonchiffon3"        "lemonchiffon4"        "lightblue"           
## [400] "lightblue1"           "lightblue2"           "lightblue3"          
## [403] "lightblue4"           "lightcoral"           "lightcyan"           
## [406] "lightcyan1"           "lightcyan2"           "lightcyan3"          
## [409] "lightcyan4"           "lightgoldenrod"       "lightgoldenrod1"     
## [412] "lightgoldenrod2"      "lightgoldenrod3"      "lightgoldenrod4"     
## [415] "lightgoldenrodyellow" "lightgray"            "lightgreen"          
## [418] "lightgrey"            "lightpink"            "lightpink1"          
## [421] "lightpink2"           "lightpink3"           "lightpink4"          
## [424] "lightsalmon"          "lightsalmon1"         "lightsalmon2"        
## [427] "lightsalmon3"         "lightsalmon4"         "lightseagreen"       
## [430] "lightskyblue"         "lightskyblue1"        "lightskyblue2"       
## [433] "lightskyblue3"        "lightskyblue4"        "lightslateblue"      
## [436] "lightslategray"       "lightslategrey"       "lightsteelblue"      
## [439] "lightsteelblue1"      "lightsteelblue2"      "lightsteelblue3"     
## [442] "lightsteelblue4"      "lightyellow"          "lightyellow1"        
## [445] "lightyellow2"         "lightyellow3"         "lightyellow4"        
## [448] "limegreen"            "linen"                "magenta"             
## [451] "magenta1"             "magenta2"             "magenta3"            
## [454] "magenta4"             "maroon"               "maroon1"             
## [457] "maroon2"              "maroon3"              "maroon4"             
## [460] "mediumaquamarine"     "mediumblue"           "mediumorchid"        
## [463] "mediumorchid1"        "mediumorchid2"        "mediumorchid3"       
## [466] "mediumorchid4"        "mediumpurple"         "mediumpurple1"       
## [469] "mediumpurple2"        "mediumpurple3"        "mediumpurple4"       
## [472] "mediumseagreen"       "mediumslateblue"      "mediumspringgreen"   
## [475] "mediumturquoise"      "mediumvioletred"      "midnightblue"        
## [478] "mintcream"            "mistyrose"            "mistyrose1"          
## [481] "mistyrose2"           "mistyrose3"           "mistyrose4"          
## [484] "moccasin"             "navajowhite"          "navajowhite1"        
## [487] "navajowhite2"         "navajowhite3"         "navajowhite4"        
## [490] "navy"                 "navyblue"             "oldlace"             
## [493] "olivedrab"            "olivedrab1"           "olivedrab2"          
## [496] "olivedrab3"           "olivedrab4"           "orange"              
## [499] "orange1"              "orange2"              "orange3"             
## [502] "orange4"              "orangered"            "orangered1"          
## [505] "orangered2"           "orangered3"           "orangered4"          
## [508] "orchid"               "orchid1"              "orchid2"             
## [511] "orchid3"              "orchid4"              "palegoldenrod"       
## [514] "palegreen"            "palegreen1"           "palegreen2"          
## [517] "palegreen3"           "palegreen4"           "paleturquoise"       
## [520] "paleturquoise1"       "paleturquoise2"       "paleturquoise3"      
## [523] "paleturquoise4"       "palevioletred"        "palevioletred1"      
## [526] "palevioletred2"       "palevioletred3"       "palevioletred4"      
## [529] "papayawhip"           "peachpuff"            "peachpuff1"          
## [532] "peachpuff2"           "peachpuff3"           "peachpuff4"          
## [535] "peru"                 "pink"                 "pink1"               
## [538] "pink2"                "pink3"                "pink4"               
## [541] "plum"                 "plum1"                "plum2"               
## [544] "plum3"                "plum4"                "powderblue"          
## [547] "purple"               "purple1"              "purple2"             
## [550] "purple3"              "purple4"              "red"                 
## [553] "red1"                 "red2"                 "red3"                
## [556] "red4"                 "rosybrown"            "rosybrown1"          
## [559] "rosybrown2"           "rosybrown3"           "rosybrown4"          
## [562] "royalblue"            "royalblue1"           "royalblue2"          
## [565] "royalblue3"           "royalblue4"           "saddlebrown"         
## [568] "salmon"               "salmon1"              "salmon2"             
## [571] "salmon3"              "salmon4"              "sandybrown"          
## [574] "seagreen"             "seagreen1"            "seagreen2"           
## [577] "seagreen3"            "seagreen4"            "seashell"            
## [580] "seashell1"            "seashell2"            "seashell3"           
## [583] "seashell4"            "sienna"               "sienna1"             
## [586] "sienna2"              "sienna3"              "sienna4"             
## [589] "skyblue"              "skyblue1"             "skyblue2"            
## [592] "skyblue3"             "skyblue4"             "slateblue"           
## [595] "slateblue1"           "slateblue2"           "slateblue3"          
## [598] "slateblue4"           "slategray"            "slategray1"          
## [601] "slategray2"           "slategray3"           "slategray4"          
## [604] "slategrey"            "snow"                 "snow1"               
## [607] "snow2"                "snow3"                "snow4"               
## [610] "springgreen"          "springgreen1"         "springgreen2"        
## [613] "springgreen3"         "springgreen4"         "steelblue"           
## [616] "steelblue1"           "steelblue2"           "steelblue3"          
## [619] "steelblue4"           "tan"                  "tan1"                
## [622] "tan2"                 "tan3"                 "tan4"                
## [625] "thistle"              "thistle1"             "thistle2"            
## [628] "thistle3"             "thistle4"             "tomato"              
## [631] "tomato1"              "tomato2"              "tomato3"             
## [634] "tomato4"              "turquoise"            "turquoise1"          
## [637] "turquoise2"           "turquoise3"           "turquoise4"          
## [640] "violet"               "violetred"            "violetred1"          
## [643] "violetred2"           "violetred3"           "violetred4"          
## [646] "wheat"                "wheat1"               "wheat2"              
## [649] "wheat3"               "wheat4"               "whitesmoke"          
## [652] "yellow"               "yellow1"              "yellow2"             
## [655] "yellow3"              "yellow4"              "yellowgreen"

Робота з даними про тварин

library(MASS)
head(Animals)
##                     body brain
## Mountain beaver     1.35   8.1
## Cow               465.00 423.0
## Grey wolf          36.33 119.5
## Goat               27.66 115.0
## Guinea pig          1.04   5.5
## Dipliodocus     11700.00  50.0
head(mammals)
##                    body brain
## Arctic fox        3.385  44.5
## Owl monkey        0.480  15.5
## Mountain beaver   1.350   8.1
## Cow             465.000 423.0
## Grey wolf        36.330 119.5
## Goat             27.660 115.0
mammals_names <- read.csv("D:/Ignat/MyCode/R/BrovaryLectures/Data/mammals_names.csv",header = FALSE)
df <- mammals
df$name <- as.character(mammals_names$V1)
names(df) <- c("body","brain","name")

Перша візуалізація

plot.new()
plot.window(xlim = range(df$body),ylim = range(df$brain))
axis(1)
axis(2)
points(df$body,df$brain)

plot.new()
plot.window(xlim = c(0,600),ylim = c(0,800))
axis(1)
axis(2)
points(df$body,df$brain)

plot.new()
plot.window(xlim = c(0,600),ylim = c(0,800))
axis(1)
axis(2)
points(df$body,df$brain)
text(df$body,df$brain + 30,df$name)

plot.new()
plot.window(xlim = c(100,600),ylim = c(150,700))
axis(1)
axis(2)
points(df$body,df$brain,col = "blue")
text(df$body,df$brain + 20,df$name, cex = 0.7)

Завдання на самостійну роботу

  1. Додати підписи до вашого графу.Зробити імена тварин червоними.

  2. Побудувати графік де імена тварин будуть розташовані вздовж осі х (вертикально) а по осі y буде вага тіла або вага мозку.

  3. Побудувати графік для маленьких тварин.

візуалізація даних гейзера

plot.new()
plot.window(xlim = range(faithful$eruptions),ylim = range(faithful$waiting))
axis(1)
axis(2)
points(faithful, col = "red", pch = 16)

Велике завдання

  1. Створити акаунт на rpubs
  2. Створити R markdown документ
  3. Сворити власний графік.

Попереднє домашне завдання - населення України