Как сделать линейный график с сетками, как показано в R? - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в R

Допустим, у меня есть этот набор данных в R:

dataset <- data.frame(Name = c("Steven","Ben", "Tim", "Rebecca", "Rachel"),
                      Time = c(18, 6, 29, 11 ,13))

Мне нужно преобразовать эти данные в линейный график с сеткой (5 линий) и y ось от 0 до 35.

Я пробовал следующий

пример кода:

   library(grid)
  library(gridBase)

  plot(dataset$Name,
  ylim = c(0,35), col = "black",
  xlab = "Student names", ylab = "Time(s)"
  grid()

Я не уверен, как получить точный график, как показано ,

А также R автоматически выводит алфавитный порядок имен по оси X, но я хочу именно так, как показано ниже. Как я могу это сделать?

Большое спасибо за вашу помощь

Ожидаемый результат:

enter image description here

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Хотя гистограмма для меня более подходит, чем линейный график для этих данных, код Нила ggplot поможет. Если вы хотите использовать только базовый R-код, такой как ваша попытка, тогда dataset$Name=factor(dataset$Name, levels=c("Steven","Ben", "Tim", "Rebecca", "Rachel")) заставит вашу переменную name использовать заданный порядок, а не алфавитный порядок при отображении результатов.

1 голос
/ 18 апреля 2020

Попробуйте это.

 library(tidyverse)

  dataset %>%
  ggplot(aes(
    x = factor(Name, levels = c(
      "Steven", "Ben", "Tim", "Rebecca", "Rachel"
    )),
    y = Time,
    group = 1
  )) +
  geom_line() +
  geom_point() +
  labs(x = "Student Names", y = "Time(s)") +
  #coord_cartesian(ylim = c(0,35)) + # scale limits from 0 to 35
  scale_y_continuous(
    limits = c(0, 35), # scale limits from 0 to 35
    breaks = seq(0, 35, 10), # adjusted for grid
    labels = seq(0, 35, 10), # adjusted for grid
    minor_breaks = seq(0,35,5) # grid line between major grids.
  ) + 
  theme( # theme customization for major and minor grid.
    panel.background = element_rect(fill = "white",colour = "black"),
    panel.grid.major.y = element_line(linetype = "dashed", color = "black"),
    panel.grid.major.x = element_blank(),
    panel.grid.minor.y = element_line(linetype = "dotted", color = "grey")
  )

Редактировать

Добавлено предложение Уокера и тема, отвечающие вашим ожиданиям.

Редактировать2

Добавлен лимит.

Редактировать3

Добавлен контроль сетки. Это могут быть контролируемые перерывы, небольшие перерывы и небольшая настройка тем. Надеюсь, это поможет.

Вывод

enter image description here

Вывод2

enter image description here

Выход 3

enter image description here

...