Скрипт на R для работы - часть I

# расчёты, нужные для построения графиков вида "ранг вида / обилие вида"
# используем базовые возможности R

# ввожу исходные данные по обилию видов на площадке
# первый способ - указание их "вручную"
pp_0 <- c(0.5, 15, 0.5, 2, 12, 1, 7, 4, 1, 20, 0.5, 1, 0.5, 7, 0.5)
# при этом формируется вектор

# перевожу его в датафрейм
pp_0 <- as.data.frame(pp_0)

# второй способ - чтение из файла на диске или в сети
pp_1 <- read.csv(file = (description = "i:/pp_1.csv"), # путь к файлу и его имя
                 sep = ";", # указание на разделитель - точку с запятой
                 header = FALSE, # указание на отсутствие заголовка (иначе - TRUE)
                 dec = ",") # указание на то, что разделитель в числах запятая
# в этом случае сразу формируется датафрейм

# проверяю, что скачалось (не обязательное действие)
View(pp_0)
View(pp_1)

# добавляю столбик с нумерацией строк с названием "id"
pp_0$id <- 1:nrow(pp_0)
pp_1$id <- 1:nrow(pp_1)

# строю график
plot(pp_0$id, # указываю x
     pp_0$pp_0, # указываю y
     type = "l", # указываю тип графика (p, b, c, o, h, s, S, n)
     ylim = c(0, 50)) # указываю пределы по оси Y
lines(pp_1$id,
      pp_1$V1, # во втором датафрейме название столбика с данными отличается
      type = "l") # добавляю линию второй площадки
# графики явно некрасивые, надо изменить

# сортирую данные в столбике по убыванию;
# если надо отсортировать по возрастанию, параметр "decreasing" опускаем
pp_0$sd <- sort(pp_0$pp_0, decreasing = T)
pp_1$sd <- sort(pp_1$V1, decreasing = T)
# в обоих случаях отсортированные данные сохраняю в столбик "sd"

# снова строю графики и подписываю оси
plot(pp_0$id,
     pp_0$sd,
     type = "l",
     ylim = c(0, 50),
     xlab = "Ранг вида",
     ylab = "Обилие вида")
lines(pp_1$id,
      pp_1$sd,
      type = "l")
title("График распределения видов для двух площадок в осях ранг вида / обилие вида") # добавляю заголовок
# заголовок выглядит некрасиво, кроме того, по графикам не понять, где какая площадка

# исправляю заголовок
plot(pp_0$id,
     pp_0$sd,
     type = "l",
     ylim = c(0, 50),
     xlab = "Ранг вида",
     ylab = "Обилие вида")
lines(pp_1$id,
      pp_1$sd,
      type = "l")
title("График распределения видов для двух площадок
      в осях ранг вида / обилие вида")

# выделить отдельные линии можно двумя способами
# способ первый - через цвет линии
plot(pp_0$id,
     pp_0$sd,
     type = "l",
     ylim = c(0, 50),
     xlab = "Ранг вида",
     ylab = "Обилие вида",
     col = "red")
lines(pp_1$id,
      pp_1$sd,
      type = "l",
      col = "green")
title("График распределения видов для двух площадок
      в осях ранг вида / обилие вида")

# способ второй - через тип линии
plot(pp_0$id,
     pp_0$sd,
     type = "l",
     ylim = c(0, 50),
     xlab = "Ранг вида",
     ylab = "Обилие вида",
     lty = 1) # варьирует от 0 до 6
lines(pp_1$id,
      pp_1$sd,
      type = "l",
      lty = 2)
title("График распределения видов для двух площадок
      в осях ранг вида / обилие вида")

# использую оба способа, а также добавляю легенду
plot(pp_0$id,
     pp_0$sd,
     type = "l",
     ylim = c(0, 50),
     xlab = "Ранг вида",
     ylab = "Обилие вида",
     col = "red",
     lty = 1)
lines(pp_1$id,
      pp_1$sd,
      type = "l",
      col = "green",
      lty = 2)
legend("topright",
       legend = c("Первая площадка", "Вторая площадка"),
       lty = c(1, 2),
       col = c("red", "green"))
title("График распределения видов для двух площадок
      в осях ранг вида / обилие вида")

# для одного из графиков надо прологарифмировать данные в столбце
pp_0$lid <- log(pp_0$id, 2) # логарифмирую данные в столбце id по основанию "2" и сохраняю в столбце "lid";
# для расчёта натурального логарифма, часть с основанием можно опустить

# ещё один график является кумулятой и требует расчёт накопленного обилия
pp_0$csd <- cumsum(pp_0$sd) # считаю накопленные обилия и сохраняю в столбец "csd"
Последнее изменение: Понедельник, 1 ноября 2021, 12:15