Kodomo

Пользователь

Презентация: [лекция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']] # обращение к элементу листа по имени