library(MASS)
df <- Animals
head(df)
## 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
Щоб отримати назви тварин використаємо команду
df_names <- rownames(df)
df_names
## [1] "Mountain beaver" "Cow" "Grey wolf"
## [4] "Goat" "Guinea pig" "Dipliodocus"
## [7] "Asian elephant" "Donkey" "Horse"
## [10] "Potar monkey" "Cat" "Giraffe"
## [13] "Gorilla" "Human" "African elephant"
## [16] "Triceratops" "Rhesus monkey" "Kangaroo"
## [19] "Golden hamster" "Mouse" "Rabbit"
## [22] "Sheep" "Jaguar" "Chimpanzee"
## [25] "Rat" "Brachiosaurus" "Mole"
## [28] "Pig"
Простий графік вага тіла - вага мозку:
plot(df)
Графік вимірів тіла
plot(df$body)
Це некрасиві графіки. Ми хочемо красивий графік - горизонтальні лінії з кружочками на кінці, різнокольорові, назви тварин, масштабування.
1. Створювати графік потрібно багато раз, тому потрібно?
2. Графік має бути таким: по вертикалі імена тварин, по горизонталі їх вага тіла.
3. Має бути лінія, що веде до точки виміру. Точка виміру має бути виділена.
4. Поряд з точкою виміру вивести числове значення (до одного знаку після коми)
5. Потрібно задати два параметра a та b і виводити тільки тварин вага яких більше за a та менша за b
Почнемо по пунктах.
Почнемо з функції
my_graph <- function(){
xlim <- 10
ylim <- 10
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(0,xlim))
axis(1)
axis(2)
}
Тепер потрібно передати дані для відображення. Нагадую наші дані:
head(df)
## 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
Назви
rownames(df)
## [1] "Mountain beaver" "Cow" "Grey wolf"
## [4] "Goat" "Guinea pig" "Dipliodocus"
## [7] "Asian elephant" "Donkey" "Horse"
## [10] "Potar monkey" "Cat" "Giraffe"
## [13] "Gorilla" "Human" "African elephant"
## [16] "Triceratops" "Rhesus monkey" "Kangaroo"
## [19] "Golden hamster" "Mouse" "Rabbit"
## [22] "Sheep" "Jaguar" "Chimpanzee"
## [25] "Rat" "Brachiosaurus" "Mole"
## [28] "Pig"
Передаємо дані у функцію
my_graph <- function(my_data){
xlim <- max(my_data$body)
ylim <- length(rownames(my_data))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(0,xlim))
axis(1)
axis(2)
points(x = my_data$body, y = 1:ylim)
}
Все ще не дуже наглядно. Спробуємо обмежити множину даних
df1 <- subset(df, df$body < 100)
my_graph(df1)
Як додати лінії? Функція segments()
my_graph <- function(my_data){
xlim <- max(my_data$body)
ylim <- length(rownames(my_data))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(0,xlim))
axis(1)
axis(2)
points(x = my_data$body, y = 1:ylim)
segments(x0 = rep(0,xlim), y0 = 1:ylim, x1 = my_data$body, y1 = 1:ylim)
}
Тепер
df1 <- subset(df, df$body < 100)
my_graph(df1)
Як скомпонувати це в одну функцію?
my_graph <- function(my_data, uplim, downlim = 0){
temp <- subset(my_data, my_data$body < uplim & my_data$body > downlim)
xlim <- uplim
ylim <- length(rownames(temp))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(0,xlim))
axis(1)
axis(2)
points(x = temp$body, y = 1:ylim)
segments(x0 = rep(0,xlim), y0 = 1:ylim, x1 = temp$body, y1 = 1:ylim)
}
Перевірка:
my_graph(df1, uplim = 100, downlim = 10)
Тепер додамо імена тварин
my_graph <- function(my_data, uplim, downlim = 0){
temp <- subset(my_data, my_data$body < uplim & my_data$body > downlim)
xlim <- uplim
ylim <- length(rownames(temp))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(0,xlim))
axis(2,at = 1:ylim,
labels = rownames(temp),
col = "blue",
col.axis = "blue",
font.axis = 4,
las = 1,
cex.axis = 0.7)
axis(1, col = "blue", col.axis = "blue")
points(x = temp$body, y = 1:ylim)
segments(x0 = rep(0,xlim), y0 = 1:ylim, x1 = temp$body, y1 = 1:ylim)
}
Результат:
my_graph(df, uplim = 100, downlim = 10)
Бонус від створення функції - її можна викликати коли нам потрібно і для будь-яких датасетів такого типу.
my_graph(mammals, 10, 1)
Проблема - написи не видно.
my_graph <- function(my_data, uplim, downlim = 0){
temp <- subset(my_data, my_data$body < uplim & my_data$body > downlim)
xlim <- uplim
ylim <- length(rownames(temp))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(-0.1 * xlim,xlim))
axis(2,at = 1:ylim,
labels = rownames(temp),
col = "blue",
col.axis = "blue",
font.axis = 4,
las = 1,
cex.axis = 0.7,
pos = 0)
axis(1, at = 0:xlim, col = "blue", col.axis = "blue")
points(x = temp$body, y = 1:ylim)
segments(x0 = rep(0,xlim), y0 = 1:ylim, x1 = temp$body, y1 = 1:ylim)
}
Ще потрібно додати текст зі значенням
my_graph <- function(my_data, uplim, downlim = 0){
temp <- subset(my_data, my_data$body < uplim & my_data$body > downlim)
xlim <- uplim
ylim <- length(rownames(temp))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(-0.1 * xlim,xlim))
axis(2,at = 1:ylim,
labels = rownames(temp),
col = "blue",
col.axis = "blue",
font.axis = 4,
las = 1,
cex.axis = 0.7,
pos = 0)
axis(1, at = 0:xlim, col = "blue", col.axis = "blue")
points(x = temp$body, y = 1:ylim)
segments(x0 = rep(0,xlim), y0 = 1:ylim, x1 = temp$body, y1 = 1:ylim)
text(x = temp$body + 0.3, y = 1:ylim, labels = temp$body, cex = 0.8, font = 2)
}
my_graph(mammals, 10, 1)
Тепер перейдемо до розфарбування
pie(1:10,col = rainbow(10), main = "Веселкове розфарбування")
pie(1:10,col = heat.colors(10), main = "Гаряче розфарбування")
pie(1:10,col = terrain.colors(10), main = "Земляне розфарбування")
pie(1:10,col = topo.colors(10), main = "Топографічне розфарбування")
pie(1:10,col = cm.colors(10), main = "Кислотне розфарбування")
my_graph <- function(my_data, uplim, downlim = 0){
temp <- subset(my_data, my_data$body < uplim & my_data$body > downlim)
xlim <- uplim
ylim <- length(rownames(temp))
plot.new()
plot.window(ylim = c(0,ylim),xlim = c(-0.1 * xlim,xlim))
axis(2,at = 1:ylim,
labels = rownames(temp),
col = "blue",
col.axis = "blue",
font.axis = 4,
las = 1,
cex.axis = 0.7,
pos = 0)
axis(1, at = 0:xlim, col = "blue", col.axis = "blue")
points(x = temp$body, y = 1:ylim, pch = 19, col = rainbow(ylim))
segments(x0 = rep(0,xlim), y0 = 1:ylim, x1 = temp$body, y1 = 1:ylim, col = rainbow(ylim, alpha = 0.7),lwd = 4)
text(x = temp$body + 0.3, y = 1:ylim, labels = temp$body, cex = 0.8, font = 2)
title(main = "Вага тіла тварин (кг)")
}
Насолоджуємось фінальним варіантом:
my_graph(mammals, 10, 1)
1. Ми хотіли б зрозуміти хто найрозумніший, тобто обчислити відношення маси тіла до маси мозку.
2. Графік має бути таким: по горизонталі імена тварин, різнокольорові прямокутники показують вдповідні значення.
3. Потрібно вивести числове значення (до одного знаку після коми)
5. Потрібно задати два параметра a та b і виводити тільки тварин для яких відношення більше за a та менша за b
Створимо змінну - відношення мозку і тіла
df$ratio <- df$brain/df$body
thr1 <- 30
thr2 <- 10
df1 <- subset(df,df$ratio < thr1 & df$ratio > thr2)
df_names <- rownames(df1)
m <- length(df1$ratio)
plot.new()
plot.window(xlim = c(0,m + 1),ylim = c(0,thr1))
axis(1,at = 1:m,
labels = df_names,
col = "blue",
col.axis = "blue", font.axis = 4,las = 2, cex.axis = 0.7, pos = 0)
axis(2)
rect(1:m - 0.5,0, 1:m + 0.5,df1$ratio,col = rainbow(m))
title(main = "Співвідношення ваги мозку до ваги тіла")
Вивести зображення тварини.
library(jpeg)
mole <- readJPEG("/home/ignatius/Documents/MyCode/R/BrovaryLectures/Data/mole.jpg")
plot.new()
plot.window(xlim = c(0,10),ylim = c(0,10))
axis(1)
axis(2)
rasterImage(mole,1,1,6,6)
Кругова діаграма
nm <- rownames(df)
df2 <- as.table(df$body[1:4])
# store the table result
pie(df2)
# first pie -- kind of dull
names(df2) = nm[1:4]
# give names
pie(df2)
# prints out names
pie(df2,col=heat.colors(length(df2)))
library(shiny)
runExample("01_hello")
runExample()
library(gtrendsR)
t <- gtrends("weather", geo = "UA")
plot(t)
brobots <- gtrends(c("Духлій","Духлий","Dukhliy"), geo = "UA",time = "today 12-m")
plot(brobots)
test <- gtrends(c("Велосипед"), geo = "UA")
plot(test)
test <- gtrends(c("Велосипед", "Сноуборд", "Лыжи"), geo = "UA")
plot(test)
test$interest_by_city
## location hits keyword geo gprop
## 1 Chernihiv 100 Велосипед UA web
## 2 Brovary 98 Велосипед UA web
## 3 Mukacheve 95 Велосипед UA web
## 4 Berdyans'k 95 Велосипед UA web
## 5 Kremenchuk 95 Велосипед UA web
## 6 Pavlohrad 94 Велосипед UA web
## 7 Dniprodzerzhyns'k 92 Велосипед UA web
## 8 Bila Tserkva 91 Велосипед UA web
## 9 Severodonetsk 90 Велосипед UA web
## 10 Nikopol' 88 Велосипед UA web
## 11 Cherkasy 84 Велосипед UA web
## 12 Uman' 84 Велосипед UA web
## 13 Kryvyi Rih 83 Велосипед UA web
## 14 Sumy 81 Велосипед UA web
## 15 Kropyvnytskyi 81 Велосипед UA web
## 16 Uzhhorod 81 Велосипед UA web
## 17 Zaporizhia 80 Велосипед UA web
## 18 Kharkiv 80 Велосипед UA web
## 19 Melitopol' 80 Велосипед UA web
## 20 Mariupol' 79 Велосипед UA web
## 21 Kiev 77 Велосипед UA web
## 22 Dnipro 77 Велосипед UA web
## 23 Odessa 76 Велосипед UA web
## 24 Poltava 75 Велосипед UA web
## 25 Slovyansk 74 Велосипед UA web
## 26 Mykolaiv 73 Велосипед UA web
## 27 Vinnytsia 72 Велосипед UA web
## 28 Khmelnytskyi 72 Велосипед UA web
## 29 Kam'yanets'-Podil's'kyi 71 Велосипед UA web
## 30 Zhytomyr 69 Велосипед UA web
## 31 Kramatorsk 67 Велосипед UA web
## 32 Rivne 66 Велосипед UA web
## 33 Kherson 66 Велосипед UA web
## 34 Makiivka 65 Велосипед UA web
## 35 Luhansk 65 Велосипед UA web
## 36 Lutsk 63 Велосипед UA web
## 37 Ivano-Frankivsk 62 Велосипед UA web
## 38 Horlivka 62 Велосипед UA web
## 39 Lviv 61 Велосипед UA web
## 40 Donetsk 60 Велосипед UA web
## 41 Ternopil 53 Велосипед UA web
## 42 Yalta 52 Велосипед UA web
## 43 Chernivtsi 51 Велосипед UA web
## 44 Sevastopol 51 Велосипед UA web
## 45 Simferopol 50 Велосипед UA web
## 46 Chernihiv 2 Сноуборд UA web
## 47 Brovary 0 Сноуборд UA web
## 48 Mukacheve 0 Сноуборд UA web
## 49 Berdyans'k 0 Сноуборд UA web
## 50 Kremenchuk 2 Сноуборд UA web
## 51 Pavlohrad 0 Сноуборд UA web
## 52 Dniprodzerzhyns'k 0 Сноуборд UA web
## 53 Bila Tserkva 0 Сноуборд UA web
## 54 Severodonetsk 0 Сноуборд UA web
## 55 Nikopol' 0 Сноуборд UA web
## 56 Cherkasy 3 Сноуборд UA web
## 57 Uman' 0 Сноуборд UA web
## 58 Kryvyi Rih 2 Сноуборд UA web
## 59 Sumy 2 Сноуборд UA web
## 60 Kropyvnytskyi 2 Сноуборд UA web
## 61 Uzhhorod 5 Сноуборд UA web
## 62 Zaporizhia 2 Сноуборд UA web
## 63 Kharkiv 5 Сноуборд UA web
## 64 Melitopol' 0 Сноуборд UA web
## 65 Mariupol' 1 Сноуборд UA web
## 66 Kiev 4 Сноуборд UA web
## 67 Dnipro 4 Сноуборд UA web
## 68 Odessa 3 Сноуборд UA web
## 69 Poltava 5 Сноуборд UA web
## 70 Slovyansk 0 Сноуборд UA web
## 71 Mykolaiv 2 Сноуборд UA web
## 72 Vinnytsia 2 Сноуборд UA web
## 73 Khmelnytskyi 2 Сноуборд UA web
## 74 Kam'yanets'-Podil's'kyi 0 Сноуборд UA web
## 75 Zhytomyr 2 Сноуборд UA web
## 76 Kramatorsk 0 Сноуборд UA web
## 77 Rivne 2 Сноуборд UA web
## 78 Kherson 2 Сноуборд UA web
## 79 Makiivka 0 Сноуборд UA web
## 80 Luhansk 2 Сноуборд UA web
## 81 Lutsk 0 Сноуборд UA web
## 82 Ivano-Frankivsk 4 Сноуборд UA web
## 83 Horlivka 0 Сноуборд UA web
## 84 Lviv 3 Сноуборд UA web
## 85 Donetsk 2 Сноуборд UA web
## 86 Ternopil 3 Сноуборд UA web
## 87 Yalta 0 Сноуборд UA web
## 88 Chernivtsi 3 Сноуборд UA web
## 89 Sevastopol 4 Сноуборд UA web
## 90 Simferopol 3 Сноуборд UA web
## 91 Chernihiv 7 Лыжи UA web
## 92 Brovary 9 Лыжи UA web
## 93 Mukacheve 9 Лыжи UA web
## 94 Berdyans'k 0 Лыжи UA web
## 95 Kremenchuk 6 Лыжи UA web
## 96 Pavlohrad 0 Лыжи UA web
## 97 Dniprodzerzhyns'k 3 Лыжи UA web
## 98 Bila Tserkva 6 Лыжи UA web
## 99 Severodonetsk 0 Лыжи UA web
## 100 Nikopol' 0 Лыжи UA web
## 101 Cherkasy 5 Лыжи UA web
## 102 Uman' 0 Лыжи UA web
## 103 Kryvyi Rih 3 Лыжи UA web
## 104 Sumy 7 Лыжи UA web
## 105 Kropyvnytskyi 4 Лыжи UA web
## 106 Uzhhorod 9 Лыжи UA web
## 107 Zaporizhia 4 Лыжи UA web
## 108 Kharkiv 9 Лыжи UA web
## 109 Melitopol' 0 Лыжи UA web
## 110 Mariupol' 4 Лыжи UA web
## 111 Kiev 8 Лыжи UA web
## 112 Dnipro 6 Лыжи UA web
## 113 Odessa 7 Лыжи UA web
## 114 Poltava 5 Лыжи UA web
## 115 Slovyansk 0 Лыжи UA web
## 116 Mykolaiv 4 Лыжи UA web
## 117 Vinnytsia 5 Лыжи UA web
## 118 Khmelnytskyi 5 Лыжи UA web
## 119 Kam'yanets'-Podil's'kyi 0 Лыжи UA web
## 120 Zhytomyr 5 Лыжи UA web
## 121 Kramatorsk 4 Лыжи UA web
## 122 Rivne 3 Лыжи UA web
## 123 Kherson 3 Лыжи UA web
## 124 Makiivka 0 Лыжи UA web
## 125 Luhansk 4 Лыжи UA web
## 126 Lutsk 3 Лыжи UA web
## 127 Ivano-Frankivsk 4 Лыжи UA web
## 128 Horlivka 0 Лыжи UA web
## 129 Lviv 4 Лыжи UA web
## 130 Donetsk 4 Лыжи UA web
## 131 Ternopil 2 Лыжи UA web
## 132 Yalta 5 Лыжи UA web
## 133 Chernivtsi 4 Лыжи UA web
## 134 Sevastopol 5 Лыжи UA web
## 135 Simferopol 4 Лыжи UA web
## 136 Pavlohrad 100 Велосипед UA web
## 137 Chernihiv 100 Велосипед UA web
## 138 Mukacheve 97 Велосипед UA web
## 139 Kremenchuk 94 Велосипед UA web
## 140 Brovary 93 Велосипед UA web
## 141 Severodonetsk 93 Велосипед UA web
## 142 Berdyans'k 93 Велосипед UA web
## 143 Bila Tserkva 91 Велосипед UA web
## 144 Dniprodzerzhyns'k 90 Велосипед UA web
## 145 Nikopol' 88 Велосипед UA web
## 146 Sumy 83 Велосипед UA web
## 147 Kryvyi Rih 83 Велосипед UA web
## 148 Melitopol' 81 Велосипед UA web
## 149 Cherkasy 81 Велосипед UA web
## 150 Uzhhorod 80 Велосипед UA web
## 151 Uman' 80 Велосипед UA web
## 152 Kharkiv 80 Велосипед UA web
## 153 Kropyvnytskyi 78 Велосипед UA web
## 154 Zaporizhia 77 Велосипед UA web
## 155 Kiev 77 Велосипед UA web
## 156 Dnipro 77 Велосипед UA web
## 157 Poltava 77 Велосипед UA web
## 158 Mariupol' 77 Велосипед UA web
## 159 Odessa 76 Велосипед UA web
## 160 Mykolaiv 74 Велосипед UA web
## 161 Kam'yanets'-Podil's'kyi 72 Велосипед UA web
## 162 Vinnytsia 72 Велосипед UA web
## 163 Slovyansk 71 Велосипед UA web
## 164 Khmelnytskyi 70 Велосипед UA web
## 165 Kramatorsk 70 Велосипед UA web
## 166 Rivne 69 Велосипед UA web
## 167 Kherson 67 Велосипед UA web
## 168 Zhytomyr 67 Велосипед UA web
## 169 Lutsk 65 Велосипед UA web
## 170 Luhansk 65 Велосипед UA web
## 171 Horlivka 64 Велосипед UA web
## 172 Ivano-Frankivsk 62 Велосипед UA web
## 173 Kalush 61 Велосипед UA web
## 174 Donetsk 60 Велосипед UA web
## 175 Lviv 59 Велосипед UA web
## 176 Makiivka 58 Велосипед UA web
## 177 Ternopil 53 Велосипед UA web
## 178 Simferopol 52 Велосипед UA web
## 179 Yalta 51 Велосипед UA web
## 180 Sevastopol 51 Велосипед UA web
## 181 Chernivtsi 49 Велосипед UA web
## 182 Kharkiv 100 Сноуборд UA web
## 183 Ivano-Frankivsk 94 Сноуборд UA web
## 184 Kiev 90 Сноуборд UA web
## 185 Poltava 88 Сноуборд UA web
## 186 Dnipro 79 Сноуборд UA web
## 187 Chernivtsi 71 Сноуборд UA web
## 188 Sevastopol 71 Сноуборд UA web
## 189 Lviv 69 Сноуборд UA web
## 190 Odessa 60 Сноуборд UA web
## 191 Simferopol 60 Сноуборд UA web
## 192 Rivne 49 Сноуборд UA web
## 193 Zaporizhia 42 Сноуборд UA web
## 194 Donetsk 38 Сноуборд UA web
## 195 Polyanytsya 100 Лыжи UA web
## 196 Kharkiv 8 Лыжи UA web
## 197 Uzhhorod 7 Лыжи UA web
## 198 Kiev 7 Лыжи UA web
## 199 Sumy 6 Лыжи UA web
## 200 Odessa 6 Лыжи UA web
## 201 Chernihiv 5 Лыжи UA web
## 202 Dnipro 5 Лыжи UA web
## 203 Poltava 5 Лыжи UA web
## 204 Cherkasy 4 Лыжи UA web
## 205 Vinnytsia 4 Лыжи UA web
## 206 Khmelnytskyi 4 Лыжи UA web
## 207 Zhytomyr 4 Лыжи UA web
## 208 Sevastopol 4 Лыжи UA web
## 209 Zaporizhia 4 Лыжи UA web
## 210 Donetsk 4 Лыжи UA web
## 211 Simferopol 3 Лыжи UA web
## 212 Mykolaiv 3 Лыжи UA web
## 213 Chernivtsi 3 Лыжи UA web
## 214 Kryvyi Rih 3 Лыжи UA web
## 215 Lviv 3 Лыжи UA web
## 216 Ivano-Frankivsk 3 Лыжи UA web
Інформація за Броварами
test <- gtrends(c("Велосипед", "Сноуборд", "Лыжи"), geo = "UA-32")
plot(test)