首页 > 解决方案 > ggplot2 (R) 不会绘制多列

问题描述

我正在尝试使用 ggplot2 绘制不同的系列(列)。但我似乎无法制作情节。

这是我的数据的样子(从 1976 年到 2017 年):

Year     Atlantic     Prairie   Ter   Ontario       BC        Quebec      Canada

1976    1.2638857   0.4546927   NA   0.6815441  0.7264928   1.0050021   0.8424173
1977    1.1722437   0.4819217   NA   0.5951699  0.7264113   0.8883986   0.7701221
1978    1.1990781   0.4870121   NA   0.5737307  0.7684976   0.8672100   0.7604538
1979    1.1287050   0.4333563   NA   0.5194313  0.6579418   0.8407571   0.7086144
1980    1.1133467   0.4198007   NA   0.5313260  0.5992944   0.7677071   0.6745683

这是我从 SO 中的类似问题中获得的代码。

library("reshape2")
coverage <- read.xlsx(. . .)
Tall_data <- melt(coverage ,  id.vars = "Year", variable.name = "series") #Step1: Rearrange data in tall format
ggplot(Tall_data, aes(Year,value)) + geom_line(aes(colour = series)) #Step2: Plot

在第 1 步中,R 给了我消息:“属性在度量变量中不相同;它们将被删除”

我附上了制作的情节 - 这很奇怪。

请注意,“领土”列中的一些数据为 NA(从 1976 年到 2003 年)。

我知道我可以这样做:

ggplot(coverage, aes(Year)) + 

  labs(y= "The B/U Ratio") +
  geom_line(aes(y=Atlantic_Provinces), colour="green") +
  geom_line(aes(y=Prairie_Provinces), colour="red") + ...

但我希望能够用一个命令来完成。此外,单独进行它们不会给我传说名称。我查看了其他 R 指南,这些指南或多或少暗示了我使用过的相同代码。但由于某种原因,它对我不起作用。

这里有两个类似的帖子:

在 R 中的同一张图上绘制多列

如何在 R 中绘制数据框的所有列- 这是我遵循的。

在此处输入图像描述

标签: rggplot2

解决方案


这是正确的方向吗?

dat <-
"Year     Atlantic     Prairie   Ter   Ontario       BC        Quebec      Canada
1976    1.2638857   0.4546927   NA   0.6815441  0.7264928   1.0050021   0.8424173
1977    1.1722437   0.4819217   NA   0.5951699  0.7264113   0.8883986   0.7701221
1978    1.1990781   0.4870121   NA   0.5737307  0.7684976   0.8672100   0.7604538
1979    1.1287050   0.4333563   NA   0.5194313  0.6579418   0.8407571   0.7086144
1980    1.1133467   0.4198007   NA   0.5313260  0.5992944   0.7677071   0.6745683
"
df <- read.delim(textConnection(dat), sep="")
library(tidyverse)
tall_df <- pivot_longer(df, 
            cols = c("Atlantic", "Prairie", "Ter", "Ontario", "BC", "Quebec", "Canada"),  
            names_to = "region"  
            )
ggplot(tall_df, aes(x = Year, y = value, color=region)) +
  geom_line()

在此处输入图像描述


推荐阅读