Суббота, 04.04.2026, 21:47Приветствуем вас Гость | RSS
Решение задач в среде R
Главная | Best ggplot | Регистрация | Вход
» Меню сайта

» R практикум

» R кодинг

» Rmatem

» Опрос
Сколько вам лет?
Всего ответов: 9

» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Задача 1 построить график заданной функции

Итак, нам необходимо построить график заданной функции в среде программирования R. Причем нам необходимо построить не только график, но и задать определенным образом и координатную сетку. Самым лучший способ — это воспользоваться библиотекой ggplot2.

library(ggplot2)

Первый шаг – нам необходимо задать собственно функцию. Функция - одно из основных математических определений - выражает зависимость между переменными величинами, при которой каждому рассматриваемому значению одной величины Х соответствует определённое значение другой величины Y. Пусть нам нужно построить график функции f(x)=9−x2f(x)=9−x2 на интервале от минус 4 до плюс 4.В среде программирования R это можно реализовать так:

f = function(x) 9-x^2
x = seq(-4, 4, 0.1)
y = f(x)
df = data.frame(x, y)

Второй шаг - строим график функции.Теперь перейдем к ggplot2. Можно считать, что у библиотеки ggplot2 есть своя философия, поняв которую, строить графики гораздо легче.

Во-первых, графики ggplot многослойные, то есть строятся они поэтапно, по слоям. Сначала указывается датафрейм, с которым мы работаем, и интересующие нас показатели (первый слой), затем указывается тип графика (второй слой), затем настройки для подписей, легенды и прочее (остальные слои). Все слои добавляются через +.

Во-вторых, для любого графика указывается функция aes, сокращенно от aesthetics, в качестве аргументов которой задаются переменные интереса (которые хотим отобразить на графике), а также элементы оформления графика, которое непосредственно связано с переменными в датафрейме. О чём речь? Проще понять на примере построения графика функции.

ggplot(data = df, aes(x = x, y = y)) +
 geom_line()

но весьма примитивно. А все дело в том, что мы еще даже не использовали возможности настройки цвета графика, толщины линии, определенный цвет координатной сетки, названия графика. Давайте все это реализуем в следующем скрипте:

ggplot(data = df, aes(x = x, y = y)) +
 geom_line(linewidth = 1, colour = 'red')+
 ggtitle('f(x)=9-x^2')+
 theme_linedraw()

не идеально. Нанесем линии осей ОХ и ОУ, а еще изменим шаг координатной сетки на 1. Последнее можно задать с помощью: geom_hline() — для горизонтальных линий. Формат функции: geom_hline(yintercept, linetype, color, size) Она рисует горизонтальную линию на текущем графике в указанных координатах по оси Y. scale_x_continuous(breaks = seq(start, stop, step))

ggplot(data = df, aes(x = x, y = y)) +
 geom_line(linewidth = 1, colour = 'red')+
 ggtitle('f(x)=9-x^2')+
scale_x_continuous(breaks = seq(-4, 4, 0.5)) +
 scale_y_continuous(breaks = seq(-7, 10, 1)) +
 geom_vline(xintercept = 0,linewidth = 1)+
 geom_hline(yintercept = 0,linewidth = 1)+
 theme_linedraw()

пересечения графиков. Для построения второго графика нам нужно создать новый датасет и добавить к скрипту еще один слой где будет построен линейный график (обязательно с указанием нового датасета и новой переменной пусть будет у1:data = df1, aes(x = x, y = y1)

y1 = x+9
df1 = data.frame(x, y1)
ggplot(data = df, aes(x = x, y = y)) +
 geom_line(linewidth = 1, colour = 'red')+
 geom_line(data = df1, aes(x = x, y = y1),linewidth = 1)+
 ggtitle('f(x)=9-x^2')+
scale_x_continuous(breaks = seq(-4, 4, 0.5)) +
 scale_y_continuous(breaks = seq(-7, 10, 1)) +
 geom_vline(xintercept = 0,linewidth = 1)+
 geom_hline(yintercept = 0,linewidth = 1)+
 theme_linedraw()

координатная сетка. По сути, нам нужно узнать точки пересечения, и поэтому нет необходимости строить по «старому» системе. Воспользуемся командами xlim и ylim, которые позволяют изменить пределы осей

y1 = x+9
df1 = data.frame(x, y1)
ggplot(data = df, aes(x = x, y = y)) +
 geom_line(linewidth = 1, colour = 'red')+
 geom_line(data = df1, aes(x = x, y = y1),linewidth = 1)+
 ggtitle('f(x)=9-x^2')+
 scale_x_continuous(breaks = seq(-4, 4, 0.5)) +
 scale_y_continuous(breaks = seq(5, 10, 1)) +
 ylim(5, 10) +
 xlim(-2, 2) +
 geom_vline(xintercept = 0,linewidth = 1)+
 geom_hline(yintercept = 0,linewidth = 1)+
 theme_linedraw()

 

Теперь очень наглядно видны координаты этих двух точек пересечения, которые, собственно, и являются решением системы этих двух уравнений (или функций, которые мы задали). x1=−1,y1=8;x2=0,y2=9

# ggplot plt best
library(ggplot2)
options(scipen = 999, digits = 10)
f = function(x) 9-x^2
x = seq(-4, 4, 0.1)
y = f(x)
df = data.frame(x, y)
ggplot(data = df, aes(x=x, y=y))+
  
  ggtitle('y(x)=9-x^2')+
  xlab('OX')+
  ylab('OY')+
  
  scale_x_continuous(breaks = seq(-4, 4, 0.5)) +
  scale_y_continuous(breaks = seq(-7, 10, 1)) +
  geom_vline(xintercept = 0,linewidth = 1)+
  geom_hline(yintercept = 0,linewidth = 1)+
  
  geom_line(linewidth = 1.2,colour = 'red') +
  
  theme(
    panel.background = element_rect(fill = "white",
                                    color = "black",
                                    size = 0.5, linetype = "solid"),
    panel.grid.major = element_line(size = 0.5, linetype = 'longdash', color = "grey50"),
    panel.grid.minor = element_line(size = 0.25, linetype = 'longdash', color = "grey50") 
  )

» Вход на сайт

» Поиск

» Работа с файлами

» Вся графика

» Гистогра́мма

» Теория вероятности

» Сравнение групп

» Дисперс анализ

» Блог

» Календарь
«  Апрель 2026  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

» Архив записей


Copyright MyCorp © 2026
uCoz