Давайте попробуем нарисовать наш первый график. Для этого создадим 2 массива: x и y. Используя функцию plot()
и эти массивы, изобразим график.
x <- 1:7
y <- x^2
plot(x,y)
График выглядит не очень. Давайте добавим название осей.
plot(x, y, xlab = 'Номер посиделки', ylab = 'Знание R')
Перед вами 3 массива:
micro
– результат по КР№1 по микроэкономикеege
– результат ЕГЭgender
– пол студента(‘М’ или ‘Ж’)micro <- c(34,55,71,42,39,52,0,71,88,84,90,43,41,14,63,96,90,29,57,65,49,88,29,84,17,
48,41,54,50,89,84,20,79,56,32,48,83,68,59,70,93,84,53,50,53,91,62,42,31,20,29,72,87,28,73,33,31,
42,35,90,57,95,84,21,91,54,79)
ege <- c(194,261,237,229,203,211,234,266,262,259,259,248,243,181,203,279,222,203,198,268,267,257,
260,264,261,257,258,263,240,254,281,260,266,272,256,214,257,269,267,258,280,265,224,255,265,264,
231,216,262,274,220,261,253,271,263,250,257,242,258,268,258,278,255,264,279,279,275)
gender <- c('М','Ж','М','М','М','М','М','Ж','Ж','Ж','Ж','Ж','Ж','Ж','М','М','Ж','М','М','М','М',
'Ж','М','Ж','Ж','Ж','Ж','М','Ж','М','Ж','М','Ж','Ж','М','М','Ж','Ж','Ж','М','М','Ж','М','Ж','М',
'М','Ж','М','Ж','Ж','Ж','М','Ж','Ж','Ж','Ж','Ж','Ж','М','М','М','Ж','М','Ж','Ж','Ж','М')
print(length(micro))
print(length(ege))
print(length(gender))
## [1] 67
## [1] 67
## [1] 67
Давайте построим обычный график зависимости баллов по микроэкономике от баллов по ЕГЭ.
plot(ege, micro, xlab = 'Баллов по ЕГЭ',
ylab = 'Баллов по микроэкономике')
Цвет можно менять с помощью параметра col
.
plot(ege, micro, xlab = 'Баллов по ЕГЭ',
ylab = 'Баллов по микроэкономике',
col = 'red')
Также можно менять значок c помощью параметра pch
. Здесь можно найти список значений для этого параметра.
plot(ege, micro, col = 'red', pch = 17)
С помощью функции points
можно добавить еще наблюдений. Давайте добавим меня.
plot(ege, micro, col = 'red', pch = 17)
points(235,98, col = 'blue', pch = 16)
Все таки есть какая-то закономерность(чем больше баллов по его, тем больше результат по микроэкономике). С помощью функции abline
можно добавить линию, которая будет показывать эту закономерность. Данную закономерность можно найти с помощью МНК(метод наименьших квадратов). В этом вам поможет функция lm
.
lm(micro~ege)
##
## Call:
## lm(formula = micro ~ ege)
##
## Coefficients:
## (Intercept) ege
## -40.2813 0.3897
plot(ege, micro, col = 'red', pch = 17)
points(235,98, col = 'blue', pch = 16)
abline(a = -40.2, b = 0.39, lty = 2, lwd = 5, col = 'green')
Важно понимать, что points
и abline
накладываются на график, поэтому он должен быть предварительно нарисован.
Параметры abline
:
a
– свободный членb
– угол наклонаlty
– вид прямой(здесь можно найти список значений для этого параметра)lwd
– толщина линииcol
– цвет линииНа самом деле pch
может быть не только фиксированным. Пусть он зависит от пола студента.
plot(ege, micro, col = 'red', pch = gender)
С помощью abline можно делать вертикальные или горизонтальные линии.
plot(ege, micro, col = 'red', pch = 17)
abline(h = mean(micro), col = 'blue')
abline(v = mean(ege), col = 'green')
Иногда нужно нарисовать несколько графиков вместе. Для этого перед построением графиков можно разметить сетку: par(mfrow = c(nrow, ncol))
, где nrow
– количество строк, а ncol
– количество столбцов. Для добавления названия графика нужно использовать функцию title
. Если заголовок большой, то можно использовать перенос строки с помощью \n.
par(mfrow = c(2, 2))
plot(ege, micro, col = 'red', pch = 17)
title('Резы по микро vs баллы ЕГЭ')
plot(ege, micro, col = 'blue', pch = 15, log = 'x')
title('Резы по микро vs логарифм баллов ЕГЭ')
plot(ege, micro, col = 'green', pch = 14, log = 'y')
title('Логарифм рез по микро vs баллы ЕГЭ')
plot(ege, micro, col = 'black', pch = 18, log = 'xy')
title('Логарифм рез по микро \nvs логарифм баллов ЕГЭ')
plot
С помощью параметра type
можно по-разному отображать наши данные.
x <- -5:5
y <- x^2
par(mfrow = c(2, 2))
plot(x,y, type = 'p', col = 'red')
title("Точки")
plot(x,y, type = 'l', col = 'purple')
title("Линия")
plot(x,y, type = 'o', col = 'blue')
title("Линия с точками")
plot(x,y, type = 's', col = 'orange')
title("Ступеньки")
С помощью параметров xlim
и ylim
можно задавать границы графика.
x <- -5:5
y <- x^2
plot(x,y, type = 'p', col = 'blue',
xlim = c(0,5),
ylim = c(0,20))
На график иногда бывает полезно нанести текст.
plot(ege, micro, col = 'red', pch = 17)
points(235,98, col = 'blue', pch = 16)
text(232,93,adj = 1, 'Это я ->', srt = 58, font = 11, col = 'blue', cex = 1.2)
Параметры функции text
:
adj
– убирает текст подальше от линий и точекsrt
– наклонfont
– шрифтcol
– цветcex
– размерМожно использовать так:
plot(ege, micro)
text(ege[1:10],micro[1:10], adj = 1, 'Это не я', font = 11, col = 'red', cex = 1)
Текст может быть фиксированным, а может зависеть от переменной.
plot(ege, micro)
text(ege[1:10],micro[1:10],adj = 1, labels = gender[1:10], font = 11, col = 'red', cex = 1.2)
С помощью функции legend
можно добавить легенду для нашего графика.
plot(ege[1:20], micro[1:20], col = 'red', pch = 17)
points(ege[20:length(ege)], micro[20:length(micro)], col = 'blue', pch = 18)
legend(x = "topleft", col = c('blue', 'red'), pch = c(17,17) ,legend = c('Первые 20', 'Остальные'))
Давайте попробуем нарисовать гистограмму, которая покажет нам распределение любимых предметов.
R <- rep('Инфа', 5)
Math <- rep('Матан', 6)
Mi <- rep('Микра', 7)
E <- rep('Англ', 8)
L <- rep('Линал', 9)
D <- rep('Дискретка', 15)
all <- c(R, Math, Mi, E, L, D)
plot(as.factor(all), ylab = 'Количество людей',
xlab = 'Название предмета')