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

» R практикум

» R кодинг

» Rmatem

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

» Статистика

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

Практика: строим графики синуса и косинуса с помощью ggplot

Нам нужно построить графики синуса и косинуса с помощью ggplot. Первое что нужно сделать это создать датасет (таблица) в котором будет переменная х отображать пределы построения графика (от -3*pi до 3*pi с шагом 0.1), а значения синуса и косинуса попадут для наглядности в вектора Sin и Cos.

# графики синуса и косинуса
library(ggplot2)
x = seq(-3*pi, 3*pi, 0.1)
Sin = sin(x)
Cos = cos(x)
df = data.frame(Sin, Cos)
head(df)

> head(df)
 Sin Cos
1 -3.673819e-16 -1.0000000
2 -9.983342e-02 -0.9950042
3 -1.986693e-01 -0.9800666
4 -2.955202e-01 -0.9553365
5 -3.894183e-01 -0.9210610
6 -4.794255e-01 -0.8775826

Собственно, теперь можно построить и сами графики. Для еще большей наглядности отобразим график синуса синим цветом (Синус – начинается на букву «С» поэтому и название цвета тоже будет на букву «С» - «синий») а график косинуса красным (Косинус – начинается на букву «К» и соответственно название цвета будет начинаться на эту же букву «К» - «красный»).

ggplot(data = df)+
  geom_line(aes(x=x, y=Sin), lwd =2, col='blue') +
  geom_line(aes(x=x, y=Cos), lwd =2, col='red') +
  theme_linedraw()

Но все же не хватает наглядности: хорошо если бы прямо на графике отображалась подсказка, которая отображала название функции и указывала ее цвет на графике. Это возможно сделать, но придется немного изменить и сам датафрейм – теперь в нем мы укажем еще и названия функций.

df2 = rbind(data.frame(func='sin', x, data = Sin), 
            data.frame(func='cos', x, data = Cos))

А теперь построим снова графики и обратите внимание что изменилось по сравнению с прошлым графиком.

ggplot(df2, 
       aes(x = x,
           y = data,
           col = func)) +
  geom_line(lwd=2) +
  theme_linedraw() 

Вот теперь все очень наглядно и понятно какой график и какой именно функции построен. Но все же есть небольшой минус: цвета графиков стали другими, а мы хотим, чтобы по-прежнему график синуса был синим, а косинуса красным. Это можно легко исправить, добавив всего одну строку: scale_color_manual(values = c("red", "blue"))


ggplot(df2,  # Specify colors manually
      aes(x = x,
      y = data,
      col = func)) +
      geom_line(lwd=2) +
      scale_color_manual(values = c("red", "blue")) +
  theme_linedraw()

Осталось добавить только название графика и задача выполнена

ggplot(df2,  # Specify colors manually
      aes(x = x,
      y = data,
      col = func)) +
      geom_line(lwd=2) +
      scale_color_manual(values = c("red", "blue")) +
  ggtitle("Графики функций sin cos", 
          subtitle = "sin cos")+
  theme_linedraw()

Можно еще немного улучшить наше творчество: представлю только скрипт и то что получится в результате его выполнения (а вам задание - попробуйте разобраться в скрипте самостоятельно).

ggplot(df2, aes(x = x, y = data,col = func)) +
  geom_line(lwd=2) +
  scale_color_manual(values = c("red", "blue")) +
  ggtitle("Графики функций sin cos", 
          subtitle = "sin cos") +
  xlab("Ох") + 
  ylab("Оу") +
  geom_vline(xintercept = 0,linewidth = 1.5) +
  geom_hline(yintercept = 0,linewidth = 1.5) +
  theme_linedraw()

А еще можно строить графики так чтобы каждый был в отдельном окне

 

# графики синуса и косинуса в разных окнах
library(ggplot2)

x = seq(-3*pi, 3*pi, 0.1)
Sin = sin(x)
Cos = cos(x)
df2 = rbind(data.frame(func='sin', x, data = Sin), 
            data.frame(func='cos', x, data = Cos))
ggplot(df2, aes(x = x, y = data,col = func)) +
  geom_line(lwd=2) +
  scale_color_manual(values = c("red", "blue")) +
  ggtitle("Графики функций sin cos", 
          subtitle = "sin cos") +
  xlab("Ох") + 
  ylab("Оу") +
  geom_vline(xintercept = 0,linewidth = 1.5) +
  geom_hline(yintercept = 0,linewidth = 1.5) +
  facet_wrap(~func)+
  theme_linedraw() +
  theme(strip.background = element_rect(fill = "grey"), 
        strip.text = element_text(color = "black", face = "bold"))

» Вход на сайт

» Поиск

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

» Вся графика

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

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

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

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

» Блог

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

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


Copyright MyCorp © 2026
uCoz