[英]How to combine 2 variables in bar chart by using ggplot in R studio?
[英]How to combine line and bar chart for specific variable using R
我有一個非常直截了當的問題。 我會為 var1、var2、var3 和 var4 繪制條形圖,為 var5 繪制折線圖。 線和條應該在同一個圖表中。 我怎樣才能讓它保持與ggplot的長格式?
set.seed(1984)
start_date <- as.Date('2015-01-01')
end_date <- as.Date('2017-01-01')
date_yq <- as.Date(sample( as.numeric(start_date): as.numeric(end_date), 50,
replace = T),
origin = '1970-01-01')
var1 <- runif(50)
var2 <- runif(50)
var3 <- runif(50)
var4 <- runif(50)
var5 <- var1+var2+var3+var4
country <- c("AT","AT","AT","BE","BE","CY","CY","CY","DE","DE")
country_r <- rep(country, times = 5)
df <- data.frame(date_yq, country_r, var1, var2,var3,var4,var5)
View(df)
df_m <- gather(df, key="variable", value="value", c("var1","var2","var3","var4","var5"))
ggplot(df_m, aes(x=date_yq, y=value, colour=variable)) +
geom_line()+
geom_bar(stat = "identity")+
xlab("Date") +
ylab("Value")
編輯:經過一些調整,這是重現數據的代碼:
ggplot(data = df_m, aes(x = date_yq, y = value,fill=as.factor(variable))) +
geom_bar(data = filter(df_m, variable != "var5"), stat = "identity",
colour="black") + scale_fill_hue(c=45, l=80) +
geom_line(data = filter(df_m, variable == "var5"), aes(col = variable,
group = variable), colour="darkblue",size=1.3)
問題是圖例將 var5 顯示為 bar 而不是單獨的行。 可能是什么問題?
您可以在 geoms 中對數據進行子集化,例如
ggplot(df_m) +
geom_col(aes(x=date_yq, y=value, fill=variable), data=~filter(., variable != "var5")) +
geom_line(aes(x=date_yq, y=value), colour="black", data=~filter(., variable == "var5")) +
labs(x="Date", y="Value")
提示:如果您預先計算了條形的高度,您只需使用 geom_col()。
您需要從geom_bar
geom_line
這是一種方法:
ggplot() +
geom_col(data=df_m[df_m$variable != "var5",], aes(x=date_yq, y=value, fill=variable)) +
geom_line(data=df_m[df_m$variable == "var5",], aes(x=date_yq, y=value, color=variable), lwd=1)+
guides(fill = guide_legend(title = "Individuals")) +
scale_color_manual(values = "darkblue", name="Grand Total") +
xlab("Date") +
ylab("Value")
使用的初始數據集是除“var5”之外的所有變量,然后在 geom_line 我定義了第二個數據集,它只是“var5”。
此外,通過使用不同的美學,“填充”和“顏色”,我能夠將圖例分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.