我想将每条线显示为具有不同的颜色和形状,这应该反映在图例上。基本上,它应该看起来像这样。
我可以使用以下代码使颜色和点样式独一无二。
data <- data.frame("1" = c(1, 3, 6, 4), "2" = c(2, 9, 2, 8))
colnames(data) <- paste0("", c(1,2))
power_1 <- factor(c(0,0.25,0.33,"Period"))
density_vs_power <- ggplot(data = as.data.frame(data))
# Loop to add geom_line layers for each column
for (i in 1:2) {
density_vs_power <- density_vs_power +
geom_line(aes(x = power_1, y = !!sym(as.character(i)), group = 1, color = as.character(i))) +
geom_point(shape = i, aes(x = power_1, y = !!sym(as.character(i)), color = as.character(i)))
}
density_vs_power <- density_vs_power +
scale_y_continuous(trans = "log10") +
theme_classic()
density_vs_power
但是,这并没有显示图例,如此处所示。我知道如果我将颜色属性放入 aes() 中,应该会出现一个图例。当我尝试使用以下代码时,
data <- data.frame("1" = c(1, 3, 6, 4), "2" = c(2, 9, 2, 8))
colnames(data) <- paste0("", c(1,2))
power_1 <- factor(c(0,0.25,0.33,"Period"))
density_vs_power <- ggplot(data = as.data.frame(data))
# Loop to add geom_line layers for each column
for (i in 1:2) {
density_vs_power <- density_vs_power +
geom_line(aes(x = power_1, y = !!sym(as.character(i)), group = 1, color = as.character(i))) +
geom_point(shape = i, aes(x = power_1, y = !!sym(as.character(i)), color = as.character(i)))
}
density_vs_power <- density_vs_power +
scale_y_continuous(trans = "log10") +
theme_classic()
density_vs_power
图例重叠,如下所示。如何使图例每行分开并基本上显示“Object #”格式?
非常感谢任何帮助!
实现所需结果的最简单方法是将数据重塑为长或整齐的格式,这也可以摆脱
for
循环:
library(ggplot2)
data_long <- data |>
dplyr::mutate(power1 = power_1) |>
tidyr::pivot_longer(
-power1,
names_to = "group"
)
ggplot(
data = data_long,
aes(power1, value, color = factor(group), group = group)
) +
geom_line() +
geom_point(aes(shape = factor(group))) +
scale_y_continuous(trans = "log10") +
theme_classic()