我正在尝试使用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)
该图显示了每年所有国家的合计值,但是我希望每个国家/地区都采用这种方式,这样我也可以选择仅绘制某些国家/地区。
我如何以这种方式利用熔体?有人可以引导我完成这个过程吗?
答案 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)