Презентация: [лекция2]
Простая графика
Самый простой график:
x_data <- c(0:10) y_data <- x_data +5 plot(x_data, y_data, main = "My Chart Title", xlab ="X", ylab = "Y", pch=16, col = "red")
Можем добавить ограничения по осям:
plot(x_data, y_data, main = "My Chart Title", xlab = "X", ylab = "Y", pch=16, col = "red", xlim=c(1,7), ylim=c(0, 20))
Кроме точек значения на графике можно отображать другими символами, меняя значения параметра pch:
plot(x_data, y_data, main = "My Chart Title", xlab = "X", ylab = "Y", pch=16, col = "red", xlim=c(1,7), ylim=c(0, 20))
Параметр lty позволяет управлять типом линий:
lines(x_data, y_data, lty = 2)
При необходимости на график можно добавить легенду:
boxplot(mtcars$mpg~mtcars$cyl, main="Milage by Car Weight", yaxt="n", xlab="Milage", col=terrain.colors(3), varwidth=T) legend("topright", inset=.05, title="Number of Cylinders", c("4","6","8"), fill=terrain.colors(3), horiz=TRUE)
Графический параметр par()
Посмотреть текущие настройки:
par()
При изменении настроек параметра par все последующие графики будут отображаться с новыми настройками:
par(col.lab='red') # сделать красными подписи к осям hist(mtcars$mpg) # подписи к осям теперь красного цвета, не нужно дополнительно это прописывать
На одном листе можно расположить несколько разных графиков:
par(mfrow=c(2,2)) # нарисовать 4 графика: по 2 графика в 2 ряда plot(mtcars$wt, mtcars$mpg, main="Scatterplot of wt vs. mpg") plot(mtcars$wt, mtcars$disp, main="Scatterplot of wt vs disp") hist(mtcars$wt, main="Histogram of wt") boxplot(mtcars$wt, main="Boxplot of wt")
Изменение размеров текста и символов
Мы не меняли значение par(mfrow()); на одном листе все еще будут отображаться 4 графика!
plot(mtcars$mpg ~ mtcars$wt, main="Title") plot(mtcars$mpg ~ mtcars$wt, main="Title", cex.main=3) # увеличение размера шрифта заголовка plot(mtcars$mpg ~ mtcars$wt, main="Title", cex.axis=2) # увеличение размера шрифта текста по осям plot(mtcars$mpg ~ mtcars$wt, main="Title", cex.lab=2) # увеличение размера шрифта подписей к осям
Изменение цветов
plot(mtcars$mpg ~ mtcars$wt, main="Title", col='blue') # цвет символов на графике plot(mtcars$mpg ~ mtcars$wt, main="Title", col.axis='red') # цвет текста по осям plot(mtcars$mpg ~ mtcars$wt, main="Title", col.lab='green') # цвет текста подписей к осям plot(mtcars$mpg ~ mtcars$wt, main="Title", col.main='violet') # цвет текста заголовка
Вектора цветов
rainbow(n) heat.colors(n) terrain.colors(n) topo.colors(n) cm.colors(n) plot(mtcars$mpg ~ mtcars$wt, main="Title", col=topo.colors(20)) x1 <- rnorm(100) ; x2 <- x1+1 ; x3 <- x2+1 ; x4 <- x3+1 ; x5 <- x4+1 ourCol <- heat.colors(5) plot(density(x1), col=ourCol[1], xlim=c(-5,8), main="Rainbow colors", xlab="") lines(density(x2), col=ourCol[2]) lines(density(x3), col=ourCol[3]) lines(density(x4), col=ourCol[4]) lines(density(x5), col=ourCol[5])
Гистограммы
hist(mtcars$drat, breaks=3) hist(mtcars$drat, breaks=5) hist(mtcars$drat, breaks=12)
Функция плотности
plot(density(mtcars$drat))
Ящик с усами
boxplot(mpg~cyl,data=mtcars,main="Car Milage Data", xlab="Number of Cylinders", ylab="Miles Per Gallon")
Violin plot
library(vioplot) x1 <- mtcars[mtcars$cyl==4,]$mpg x2 <- mtcars[mtcars$cyl==6,]$mpg x3 <- mtcars[mtcars$cyl==8,]$mpg vioplot(x1, x2, x3, names=c("4 cyl", "6 cyl", "8 cyl"), col="gold") title("Violin Plots of Miles Per Gallon")
Работа с missing data
newRow <- mtcars[1,] rownames(newRow) <- "Lada" newRow[4] <- NA # присваиваем 4ому элементу строки значение NA mtcarsNew <- rbind(mtcars, newRow) # добавляем к mtcars новую строку mtcarsNew[30:33,] mean(mtcarsNew$hp) # подсчет среднего значения по столбцу, содержащему NA, не даст численных результатов any(is.na(mtcarsNew$hp)) # проверка данных в столбце на наличие NA mean(mtcarsNew$hp, na.rm=TRUE) # подсчет среднего значения по столбцу, исключая значения NA which(is.na(mtcarsNew$hp)) # получить индекс значения NA в столбце mtcarsA <- na.omit(mtcarsNew) # убрать строки, содержащие NA
Матрицы
m <- matrix(c(1:6),nrow=2,ncol=3) # заполнить матрицу по колонкам m <- matrix(c(1:6),nrow=2,ncol=3,byrow=T) # заполнить матрицу по строкам
Обращение к элементам матрицы
m[2,3] # получить элемент, находящийся на пересечении 2ой строки и 3его столбца m[2,] # получить всю вторую строку m[,3] # получить весь третий столбец m[2,3] = 1 # присвоить элементу, находящемуся на пересечении 2ой строкки и 3его столбца, значение 1
Узнать размер матрицы
dim (m)
Присваивание имен столбцам и колонкам матрицы
rownames(m)<-c("r1","r2") # присвоить имена строкам colnames(m)<-c("c1","c2","c3") # присвоить имена столбцам
Списки
L <- list ('A', c(1,2), 30) # создать список L1 <- list (L, 40) # элементом списка может быть список L [[4]] = 4 # прсвоить 4ому элементу списка значение 4 L [[ length(L) + 1]] = 4 # создать новый (следующий) элемент листа и присвоить ему значение 4 L[3] # получаем список, состоящий из одного элемента L[[3]] # получаем вектор, содержащий одно значение L <- list(10, list(11,12,13),20,list(30)) L [[2]] # список L [[2]][[3]] # вектор
Присвоение имен элементами списка
L=list(10,20) L$abc=123 # добавление в список нового элемента с именем abc names(L) # получить имена элементов листа L[[3]] # обращение к элементу листа по номеру L$abc # обращение к элементу листа по имени L[['abc']] # обращение к элементу листа по имени