我想用不同颜色的多条线绘制折线图,但没有多少运气。我的数据集包括10个州和9次选举中每个州的投票率(所以各州列在左栏中,而后续各栏是1980年至2012年的选举年,每个州的投票率均为10个州)。我想在X轴上有一年的图表和Y轴上的投票投票率,每个状态都有一条线。用多条线绘制折线图
我发现这个以前的答案(Plotting multiple lines from a data frame in R)类似的问题,但似乎无法复制它使用我的数据。任何想法/建议将非常感激!
我想用不同颜色的多条线绘制折线图,但没有多少运气。我的数据集包括10个州和9次选举中每个州的投票率(所以各州列在左栏中,而后续各栏是1980年至2012年的选举年,每个州的投票率均为10个州)。我想在X轴上有一年的图表和Y轴上的投票投票率,每个状态都有一条线。用多条线绘制折线图
我发现这个以前的答案(Plotting multiple lines from a data frame in R)类似的问题,但似乎无法复制它使用我的数据。任何想法/建议将非常感激!
使用tidyr::gather
或reshape::melt
将数据转换为长格式。
## Simulate data
d <- data.frame(state=letters[1:10],
'1980'=runif(10,0,100),
'1981'=runif(10,0,100),
'1982'=runif(10,0,100))
library(dplyr)
library(tidyr)
library(ggplot2)
## Transform to a long df
e <- d %>% gather(., key, value, -state) %>%
mutate(year = as.numeric(substr(as.character(key), 2, 5))) %>%
select(-key)
## Plot
ggplot(data=e,aes(x=year,y=value,color=state)) +
geom_point() +
geom_line()
请附上您的数据或样本数据,在你的问题,这样我们就可以直接回答你的问题,并帮助您找到问题的根源。通过使用dput()
来简化粘贴数据。
这里的另一种解决问题的方法,而是使用了tidyr
包SCOA的样本数据和reshape2
包:
# Sample data
d <- data.frame(state = letters[1:10],
'1980' = runif(10,0,100),
'1981' = runif(10,0,100),
'1982' = runif(10,0,100))
library(reshape2)
library(ggplot2)
# Melt data and remove X introduced into year name
melt.d <- melt(d, id = "state")
melt.d[["variable"]] <- gsub("X", "", melt.td[["variable"]])
# Plot melted data
ggplot(data = melt.d,
aes(x = variable,
y = value,
group = state,
color = state)) +
geom_point() +
geom_line()
产地:
注意,我离开了as.numeric()
转换为一年从scoa的例子来看,这就是为什么上面的图表没有包含scoa's额外的x轴ticks。
谢谢!一切工作正常,直到我到e $ key命令: d < - data.frame(state = letters [1:10], +'1980'= runif(10,0,100), +'1984' = runif(10,0,100), +'1988'= runif(10,0,100), +'1992'= runif(10,0,100), +'1996'= runif(10,0,100), +'' ''= runif(10,0,100), +'2012'= runif(10,0,100)) 库(tidyr) 库(ggplot2) e < - gather(d,key,value,-state) e $ key < - as.numeric(sub(“^ X”,“”,as.character(e $ key))) '$ < - 。data.frame'('* tmp *',“key”,value = numeric(0)): 替换有0行,数据有90 – klynn
任何想法我做错了什么?作为变量名具有数字的 – klynn
是棘手的。你可以发布'name(d)'的输出,其中d是实际数据框的名称(不是我为答案所做的那个)? – scoa