需要帮助使用 ggplot 绘制带有五条线的折线图
Posted
技术标签:
【中文标题】需要帮助使用 ggplot 绘制带有五条线的折线图【英文标题】:Need help plotting line chart with five lines using ggplot 【发布时间】:2020-04-18 17:44:46 【问题描述】:此输入数据来自 dput:
structure(list(Player = c("deGrom", "deGrom", "deGrom", "deGrom",
"deGrom", "deGrom", "deGrom", "Wheeler", "Wheeler", "Wheeler",
"Wheeler", "Wheeler", "Wheeler", "Syndergaard", "Syndergaard",
"Syndergaard", "Syndergaard", "Matz", "Matz", "Matz", "Matz",
"Matz", "Stroman", "Stroman"), GSc = c(66, 70, 77, 77, 79, 78,
79, 76, 70, 64, 70, 62, 70, 69, 73, 81, 62, 68, 62, 69, 68, 70,
63, 75)), row.names = c(NA, -24L), class = c("tbl_df", "tbl",
"data.frame"))
我有一个包含上述数据的数据框 MetsGS3。
我想使用 ggplot 为五个玩家中的每一个创建一个带有不同颜色线的折线图。 x 轴将包含数字 2、4、6、8、10、12。y 轴将包含游戏得分 (GS2)。我希望 x 轴标签为 Player,y 轴标签为 Game Score。
此代码不起作用,我需要帮助才能使其正常工作。我知道它缺少元素。
ggplot(MetsGS, aes(x=MetsGS$Player, y=GSc, colour = MetsGS$Player) + geom_line(size=1.2) + ggtitle("Mets Game Score Game Scores")
我上次在 RStudio 中运行上述 ggplot 代码时遇到了这个错误: "错误:不完整的表达式:ggplot(MetsGS, aes(x=MetsGS$Player, y=GSc, color = MetsGS$Player) + geom_line(size=1.2) + ggtitle("Mets Game Score Game Scores")"
提前致谢, 霍华德
【问题讨论】:
好的,有 2 个问题:一个,您已经关闭了aes
调用周围的括号,但是您缺少一个 )
来关闭第一个 ggplot
(这是不完整的表达式)。其次,由于您已将MetsGS
数据帧作为第一个参数传递给ggplot
,因此您不再需要其余的MetsGS$
位。这是基本的东西:看看?ggplot2::ggplot
,尤其是示例部分。
感谢 jakub。我打算看看示例部分的内容。
除了上面指出的错别字之外,您还说“x 轴将包含数字 2、4、6、8、10、12。”但这些数字不在您的数据中。相反,您将分类变量 Player 放在 x 轴上。目前尚不清楚您要做什么,但请先修复错字
【参考方案1】:
我认为您的数据集中缺少一些数据。我找不到您如何将 x
定义为 2 到 12 之间的数字。
因此,我假设对于每个玩家,包含玩家姓名的每一行对应于不同的游戏。因此,我使用dplyr
创建了一个新列(我将您的数据框称为d
):
library(dplyr)
d %>% group_by(Player) %>% mutate(Number = seq_along(Player)*2)
# A tibble: 24 x 3
# Groups: Player [5]
Player GSc Number
<chr> <dbl> <dbl>
1 deGrom 66 2
2 deGrom 70 4
3 deGrom 77 6
4 deGrom 77 8
5 deGrom 79 10
6 deGrom 78 12
7 deGrom 79 14
8 Wheeler 76 2
9 Wheeler 70 4
10 Wheeler 64 6
# … with 14 more rows
并像这样绘制它:
library(ggplot2)
library(dplyr)
d %>% group_by(Player) %>% mutate(Number = seq_along(Player)*2) %>%
ggplot(., aes(x=Number, y=GSc, colour = Player)) +
geom_line(size=1.2) +
ggtitle("Mets Game Score Game Scores")+
scale_x_continuous(breaks = seq(2,14, by = 2))
它看起来像您要找的东西吗?如果没有,你能澄清你的问题吗
【讨论】:
dc37,非常感谢你写的东西。尽管该图表与我所寻求的不完全匹配,但您回复中的出色信息使我能够创建所需的图表。 很高兴我的回答可以帮助您解决问题;)以上是关于需要帮助使用 ggplot 绘制带有五条线的折线图的主要内容,如果未能解决你的问题,请参考以下文章