我对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轴上输出名称的字母顺序,但我希望如下所示。我该怎么办?
非常感谢您的帮助
预期结果:
尽管对于这些数据,条形图比折线图更合适,但Neel的ggplot代码可以解决问题。如果您只想像尝试那样使用基R代码,则dataset$Name=factor(dataset$Name, levels=c("Steven","Ben", "Tim", "Rebecca", "Rachel"))
将使您的名称变量在显示结果时使用给定顺序而不是字母顺序。
尝试一下。
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"))
编辑
添加了沃克的建议和主题以满足您的期望。
输出
Output2