用线连接geom_points(数据集中不同列的平均值)

问题描述 投票:0回答:1

我是 R 的新手,我确信有一个简单的解决方案,但在尝试了多种方法并观看了相当多的视频后,我想知道是否有人可以帮助给我一些建议。

我想在 2 个 geom_points 之间连接一条线,这是表中两列的平均值。 我已尝试以下操作,但这无法在它们之间连接线路。 请参阅下面的屏幕截图和 r 脚本。

ggplot()+ geom_point(数据= wsd,映射= aes(x =“完整的泥”,y =平均值(Mud_intact)),颜色=“蓝色”,大小= 3)+ geom_point(数据= wsd,映射= aes(x =“沙子完好无损”,y =平均值(Sand_intact)),颜色=“蓝色”,大小= 3)+ 几何线()+ geom_point(数据= wsd,映射= aes(x =“泥毛剪”,y =平均值(Mud_hair.cut)),颜色=“红色”,尺寸= 3)+ geom_point(数据= wsd,映射= aes(x =“沙发剪”,y =平均值(Sand_hair.cut)),颜色=“红色”,大小= 3)+ 几何线()+ labs(title =“不同基材上有/无毛发的平均蠕虫速度的比较”,x =“蠕虫状况和表面类型”,y =“平均速度”)+ 主题_bw()

这给了我以下内容。我想用红线连接红点,用蓝线连接蓝点。

Graph created with the above code

非常感谢任何帮助。

请参阅上文。我尝试存储平均值,然后将这些平均值包含在 geom_line() 函数中,并将 geom_point() 中使用的信息写入 geom_line() 图中,但无济于事。

graph line mean geom geom-point
1个回答
0
投票

对于您的情况,您不需要每次调用geom功能都指定数据,最好不要为ggplot添加任何计算,并在添加之前制作最终数据集。

您可以检查我的解决方案的答案,我创建了示例数据集,其中包含四列(请根据您的列名称和数据集格式进行调整)


library(ggplot2)

# Example data

wsd <- data.frame(mud_interact = c(1,2,3,4,5,6),
                  sand_interact = c(1,3,5,6,8,9),
                  mud_hair_cut = c(2,4,5,6,7,8),
                  sand_hair_cut = c(5,6,7,8,9,9))

下面,我通过计算每列的平均值来创建要在图中使用的最终数据

# Create a data frame with column means
means <- data.frame(
  variable = names(wsd),
  mean_value = colMeans(wsd)
)

如果您想在图中手动缩放颜色,您可以添加新列,因此通过使用 grepl,我为所有交互列添加红色名称,这也有助于减少 ggplot 的工作量

# Determine colors based on variable names
means$color <- ifelse(grepl("interact", means$variable), "red", "blue")

我添加了一个数据(平均值)和aes作为x轴变量名称,y轴作为适当的平均值颜色命令是指定包含值的颜色,这是最终数据集中的颜色列,我们需要在scale_color_manual函数中指定我们的意图好吧。

geom_line 首先用于分割颜色数据(以不同的方式进行交互和混合),然后很容易指定为组和颜色。

# Create a ggplot scatter plot
ggplot(means, aes(x = variable, y = mean_value, color = color)) +
  geom_point(size = 3) +
  geom_line(data = subset(means, color == "red"), aes(group = 1), linetype = "solid", color = "red") +
  geom_line(data = subset(means, color == "blue"), aes(group = 1), linetype = "solid", color = "blue") +
  scale_color_manual(values = c("red" = "red", "blue" = "blue")) +
  labs(title = "Column Means",
       x = "Variable",
       y = "Mean Value")

© www.soinside.com 2019 - 2024. All rights reserved.