下面的兩個 ggplots 都可以單獨作業,但我想將它們組合到一個圖中,其中Group線的變數df2出現在圖例中。
library(ggplot2)
df1 <- data.frame(x = 1:10, y = 1:10)
df2 <- data.frame(x = rep(1:10,2),
y = c(seq(1,2,length.out = 10),
seq(5,6,length.out = 10)),
Group = c(rep("A",10),rep("B",10))
)
p1 <- ggplot(data = df1, aes(x = x, y = y))
geom_point()
p2<- ggplot(data = df2, aes(x = x, y = y,
group = Group, color = Group))
geom_line()

問題是由 2 個資料框具有不同的列名這一事實引起的。因此,我無法生成 2 個圖并添加它們,就像p1 p2之前在此處發布的其他解決方案中所做的那樣。
uj5u.com熱心網友回復:
首先,在ggplot2每一層都有自己的區域data引數,即你可以將不同的資料集傳遞給每一層。如果您不data為圖層設定引數,它將簡單地繼承ggplot()(如果有)中設定的全域資料集,即您可以通過添加 geom_line(data = df2, aes(group = Group, color = Group))到您的第一個圖來將您的圖組合成一個。
其次,如果您的資料集具有不同的列名,那也沒什么大不了的。與data論點一樣,每一層都有自己的(本地)美學集。如果未設定,圖層將繼承 中設定的全域美學ggplot(),即使用不同的列名稱,您只需告訴應將哪些列映射到每個圖層的美學上。
稍微更改您的示例資料:
library(ggplot2)
df1 <- data.frame(x1 = 1:10, y1 = 1:10)
df2 <- data.frame(x2 = rep(1:10,2),
y2 = c(seq(1,2,length.out = 10),
seq(5,6,length.out = 10)),
Group = c(rep("A",10),rep("B",10))
)
ggplot(data = df1, aes(x = x1, y = y1))
geom_point()
geom_line(data = df2, aes(x = x2, y = y2, group = Group, color = Group))

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/377674.html
上一篇:測驗引數是否存在并處理nginx中的proxy_pass
下一篇:ggplot時間序列圖錯誤:無效輸入:time_trans僅適用于POSIXct類的物件,但資料在POSIXct中
