我為圖中繪制了四條擬合線和對應點的圖形創建了以下代碼。我有傳奇的問題。出于某種原因,我找不到將點的不同形狀分配給變數名稱的方法。此外,顏色與圖表中的實際顏色不一致。
y1 <- c(1400,1200,1100,1000,900,800)
y2 <- c(1300,1130,1020,970,830,820)
y3 <- c(1340,1230,1120,1070,940,850)
y4 <- c(1290,1150,1040,920,810,800)
df <- data.frame(x,y1,y2,y3,y4)
g <- ggplot(df, aes(x=x), shape="shape")
geom_smooth(aes(y=y1), colour="red", method="auto", se=FALSE) geom_point(aes(y=y1),shape=14)
geom_smooth(aes(y=y2), colour="blue", method="auto", se=FALSE) geom_point(aes(y=y2),shape=8)
geom_smooth(aes(y=y3), colour="green", method="auto", se=FALSE) geom_point(aes(y=y3),shape=6)
geom_smooth(aes(y=y4), colour="yellow", method="auto", se=FALSE) geom_point(aes(y=y4),shape=2)
ylab("x") xlab("y") labs(title="overview")
geom_line(aes(y=1000), linetype = "dashed")
theme_light()
theme(plot.title = element_text(color="black", size=12, face="italic", hjust = 0.5))
scale_shape_binned(name="Value g", values=c(y1="14",y2="8",y3="6",y4="2"))
print(g)
我想知道為什么顏色不匹配,以及我如何構建這樣一個圖例,明確哪個形狀對應于哪個變數名稱。
uj5u.com熱心網友回復:
雖然你可以手動添加傳說通過scale_shape_manual,也許是適當的解決辦法是重塑你的資料(建議使用tidyr::pivot_longer()的y1:y4變數),然后分配所產生的變數,形狀美觀(這時你可以手動設定顏色根據自己的喜好)。然后,您需要使用單個geom_point()而geom_smooth()不是四個。
此外,您還缺少一個可重現的示例( 的值是x多少?),并且您的代碼在嘗試執行 loess 平滑時會發出一些警告(因為資料點少于執行所需的資料點)。
更新(2021年12月12日)
下面是我們重塑原始資料,并給它使用其ggplot重復的例子aes()功能自動繪制不同geom_point,并geom_smooth為每個“Y組”。我編造了x變數的值。
library(ggplot2)
library(tidyr)
x <- 1:6
y1 <- c(1400,1200,1100,1000,900,800)
y2 <- c(1300,1130,1020,970,830,820)
y3 <- c(1340,1230,1120,1070,940,850)
y4 <- c(1290,1150,1040,920,810,800)
df <- data.frame(x,y1,y2,y3,y4)
data2 <- df %>%
pivot_longer(y1:y4, names_to = "group", values_to = "y")
ggplot(data2, aes(x, y, color = group, shape = group))
geom_point(size = 3) # increased size for increased visibility
geom_smooth(method = "auto", se = FALSE)
在 RStudio 中逐行運行代碼并使用它來檢查data2. 我認為這里的結果輸出更有意義:

另一個更新
Freek19,在您的第二個示例中,您需要手動指定形狀和顏色比例,以便 ggplot2 認為它們是相同的,如下所示:
library(ggplot2)
data <- ... # from your previous example
ggplot(data, aes(x, y, shape = group, color = group))
geom_smooth()
geom_point(size = 3)
scale_shape_manual("Program type", values=c(1, 2, 3,4,5))
scale_color_manual("Program type", values=c(1, 2, 3,4,5))

希望這可以幫助。
uj5u.com熱心網友回復:
我設法接近我想要的,使用:
library(ggplot2)
data <- data.frame(x = c(0,0.02,0.04,0.06,0.08,0.1),
y = c(1400,1200,1100,1000,910,850, #y1
1300,1130,1010,970,890,840, #y2
1200,1080,980,950,880,820, #y3
1100,1050,960,930,830,810, #y4
1050,1000,950,920,810,800), #y5
group = rep(c("5%","6%","7%","8%","9%"), each = 6))
data
Values <- ggplot(data, aes(x, y, shape = group, color = group)) # Create line plot with default colors
geom_smooth(aes(color=group)) geom_point(aes(shape=group),size=3)
scale_shape_manual(values=c(1, 2, 3,4,5))
geom_line(aes(y=1000), linetype = "dashed")
ylab("V(c)") xlab("c") labs(title="Valuation")
theme_light()
theme(plot.title = element_text(color="black", size=12, face="italic", hjust = 0.5))
labs(group="Program Type")
Values
我只被困在 2 個傳說中。我想更改兩個名稱,否則它們會重疊。但是我不知道如何做到這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388265.html
