需要帮助使用 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 绘制带有五条线的折线图的主要内容,如果未能解决你的问题,请参考以下文章

如何在matplotlib中创建同一条线具有两种不同颜色的折线图?

顶部带有线的多轴图。 Matplotlib

用于海量数据的 Javascript 图表库 [关闭]

如何在 R 中创建带有误差范围的折线图

iOS 动画绘制线条颜色渐变的折线图

echart 解决setOption线残留