GGplot2:绘制数据框中特定列每年的值

时间:2019-07-01 11:49:30

标签: r ggplot2

我正在尝试使用ggplot2在y轴上的值相对于x轴上的年。

这是数据集:https://drive.google.com/file/d/1nJYtXPrxD0xvq6rBz2NXlm4Epi52rceM/view?usp=sharing

我想绘制特定国家/地区的值。

仅将年份指定为x轴,将国家/地区的值指定为y轴将无法正常工作。我正在阅读,我需要融合数据帧,所以我做到了,但是它现在的格式似乎不太方便完成工作。

我假设我没有正确融化,但是我很难找到我需要具体做的事情。

我之前所做的是手动转置数据并将年份以及所有国家/地区作为一列。

这是转置的数据集:

https://drive.google.com/file/d/131wNlubMqVEG9tID7qp-Wr8TLli9KO2Q/view?usp=sharing

这就是我融化的方式:

inv_melt.data <- melt(investments_t.data, id.vars="Year")

ggplot() +
  geom_line(aes(x=Year, y=value), data = inv_melt.data) 

该图显示了每年所有国家的合计值,但是我希望每个国家/地区都采用这种方式,这样我也可以选择仅绘制某些国家/地区。

我如何以这种方式利用熔体?有人可以引导我完成这个过程吗?

1 个答案:

答案 0 :(得分:1)

链接到数据集的列中没有名为"Year"的列,每年都有列。因此,需要先用"country"融化,然后用"variable"编辑sub

inv_melt.data <- reshape2::melt(investments_t.data, id.vars="country")
inv_melt.data$variable <- as.integer(sub("^X", "", inv_melt.data$variable))

ggplot(inv_melt.data, aes(variable, value, color = country)) +
  geom_line(show.legend = FALSE)

编辑。

以下代码仅保留某些国家/地区,过滤掉缺少更多值的国家/地区。

i <- sapply(investments_t.data[-1], function(x) sum(is.na(x)) == 0)
i <- c(1, which(i))
inv_melt.data <- reshape2::melt(investments_t.data[i], id.vars = "Year")

ggplot(inv_melt.data, aes(Year, value, color = variable)) +
  geom_line(show.legend = FALSE)