如何用R所示的网格制作折线图?

问题描述 投票:0回答:2

我对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

r ggplot2 grid dataset
2个回答
1
投票

尽管对于这些数据,条形图比折线图更合适,但Neel的ggplot代码可以解决问题。如果您只想像尝试那样使用基R代码,则dataset$Name=factor(dataset$Name, levels=c("Steven","Ben", "Tim", "Rebecca", "Rachel"))将使您的名称变量在显示结果时使用给定顺序而不是字母顺序。


0
投票

尝试一下。

 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),breaks = seq(0,35,5), labels = seq(0,35,5)) + # for breaks and labels at 5
  theme(panel.background = element_rect(fill = "white"),
        panel.grid.major.y = element_line(linetype = "dashed", color = "black"))

编辑

添加了沃克的建议和主题以满足您的期望。

输出

enter image description here

Output2

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.