R 使用部分通用的图例绘制多个线段

R 使用部分通用的图例绘制多个线段,r,ggplot2,plot,legend,segment,R,Ggplot2,Plot,Legend,Segment,假设我有以下数据框: line_df <- data.frame(x_ini = c(0.55,2.55,1.55,5.55,7.55), x_end = c(1.45,3.45,2.45,6.45,8.45), y = c(-0.5,-0.5,-1.5,-2.5,-2.5), category = c("red","red","blue","green","green")) 所以问题是,我不能向它添加另一个ggplot层,如果我直接添加geom_段(Nova在回答中提到),我会得到有关

假设我有以下数据框:

line_df <- data.frame(x_ini = c(0.55,2.55,1.55,5.55,7.55),
x_end = c(1.45,3.45,2.45,6.45,8.45),
y = c(-0.5,-0.5,-1.5,-2.5,-2.5),
category = c("red","red","blue","green","green"))

所以问题是,我不能向它添加另一个
ggplot
层,如果我直接添加
geom_段
(Nova在回答中提到),我会得到有关
填充
选项的错误

我认为,如果你为“行”添加一个字段,你就可以这样做——这就是你的意思吗

line_df$row <- seq_len(nrow(line_df))

ggplot(line_df) +
  geom_segment(aes(x = x_ini, xend = x_end, y = y, yend = y, 
                   group = row, color = category), size = 2) +
  scale_color_manual(values = c("lightblue", "seagreen", "firebrick"))

我认为,如果您为“行”添加一个字段,您可以这样做-这就是您的意思吗

line_df$row <- seq_len(nrow(line_df))

ggplot(line_df) +
  geom_segment(aes(x = x_ini, xend = x_end, y = y, yend = y, 
                   group = row, color = category), size = 2) +
  scale_color_manual(values = c("lightblue", "seagreen", "firebrick"))

这正是我想要的,谢谢!:)。。。但问题是它是在另一个
ggplot
之后出现的,所以我不能直接使用它。我在我的问题中添加了一个编辑,提供了更多的细节,我猜在添加两个ggplot时会有一些冲突,但我还没有找到解决方法。@CristóbalRoderoGómez,尝试在调用
geom_bar
时添加“fill”参数,而不是第一次调用
ggplot
。如果需要进一步帮助,请添加一个可复制的示例-不清楚新数据框中的哪些列是“x_ini”和“e_end”。在这种情况下,我在grDevices::col2rgb(color,TRUE):无效的颜色名称“x”(它将变量解释为颜色,而作为ggplot参数,它将变量解释为类别。)
x_ini
变量是出现在
line_df
中的变量,只是我们必须指定它来自该数据帧,因为有多个。因此
geom_段
指令将是
geom_段(data=line_df,…
。希望现在更清楚。我试图创建我认为您想要的图形,但我不清楚您希望最终图形是什么样子。基本上它将是条形图(对应于
上一个_df
数据框)和具有相同轴的下方等。线段(由
line_df
数据框描述)。这正是我想要的,谢谢!)…但问题是它紧跟在另一个
ggplot
之后,所以我不能直接使用它。我在问题中添加了一个编辑,提供了更多细节,我猜在添加两个ggplot时会有一些冲突,但我还没有找到解决方法。@CristóbalRoderoG mez,尝试添加“填充”调用
geom\u bar
中的参数,而不是第一次调用
ggplot
。如果需要进一步帮助,请添加一个可复制的示例-不清楚新数据框中的哪些列是“x_ini”和“e_end”。在这种情况下,我在grDevices::col2rgb(颜色,TRUE):无效的颜色名称“x”(它将变量解释为颜色,而作为ggplot参数,它将变量解释为类别。)
x_ini
变量是出现在
line_df
中的变量,只是我们必须指定它来自该数据帧,因为有多个。因此
geom_段
指令将是
geom_段(data=line_df,…
。希望现在更清楚。我试图创建我认为您想要的图形,但我不清楚您希望最终图形是什么样子。基本上它将是条形图(对应于
上一个_df
数据框)和具有相同轴的下方等。线段(由数据框中的
行描述)。
ggplot(previous_df) +
  geom_bar(aes(labeldf, number, fill=letter), stat="identity",position='dodge') +
  geom_segment(data = line_df, aes(x = x_ini, xend = x_end, y = y, yend = y, 
                                   group = row, color = category), size = 2) +
  scale_color_manual(values = c("lightblue", "seagreen", "firebrick"))