[英]Plotting a line graph with multiple lines
我正在嘗試繪制具有不同顏色的多條線的折線圖,但運氣不佳。 我的數據集包含10個州和9個選舉中每個州的投票率(因此,這些州列在左欄中,隨后的每個列都是1980年至2012年的選舉年,每個州的投票率10個州)。 我想要一個圖表,其中X軸為年份,Y軸為投票率,每個州都有一條線。
我找到了這個先前的答案( 從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()
可以簡化數據粘貼。
這里還有一個問題的解決方案,使用SCOA的樣本數據和reshape2
包,而不是tidyr
包:
# 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()
產生:
請注意,我從scoa的示例中省略了as.numeric()
轉換的年份,因此這就是為什么上面的圖不包括scoa的額外x軸刻度的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.