Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 自定义添加到ggplot的几何图形线图例_R_Ggplot2_Data Visualization - Fatal编程技术网

R 自定义添加到ggplot的几何图形线图例

R 自定义添加到ggplot的几何图形线图例,r,ggplot2,data-visualization,R,Ggplot2,Data Visualization,我已经将geom_线添加到了我不想修改的绘图中。这些线与已绘制的数据相关 如果你看情节,我想做的是让geom_线的颜色显示在图例中,而不是线型 我想让原型A线显示它与原型A图的颜色相同,而原型B线的颜色相同。我甚至不需要显示线型,只需要显示颜色 我无法找到一种方法来做到这一点,而不会弄乱测试类型的图例。我看过类似的堆栈交换问题,但找不到有助于解决此问题的答案 绘图代码如下: graphOutputCombined <- ggplot(Typebdata, aes(x = conc0, y

我已经将
geom_线
添加到了我不想修改的绘图中。这些线与已绘制的数据相关

如果你看情节,我想做的是让geom_线的颜色显示在图例中,而不是线型

我想让原型A线显示它与原型A图的颜色相同,而原型B线的颜色相同。我甚至不需要显示线型,只需要显示颜色

我无法找到一种方法来做到这一点,而不会弄乱测试类型的图例。我看过类似的堆栈交换问题,但找不到有助于解决此问题的答案

绘图代码如下:

graphOutputCombined <- ggplot(Typebdata, aes(x = conc0, y = signal, color = "Prototype B")) +
  geom_point() +
  geom_ribbon(data=newdata_Typeb, aes(x=conc, y=p, ymin=pmin, ymax=pmax, color="Prototype B",  fill = "Prototype B"), alpha=0.2) +
  geom_line(data=newdata_Typeb, aes(x=conc, y=p, color = "Prototype B")) +
    geom_ribbon(data=newdata_TypeA, aes(x=conc, y=p, ymin=pmin, ymax=pmax, color = "Prototype A",  fill = "Prototype A"), alpha = 0.2) +
  geom_line(data=newdata_TypeA, aes(x=conc, y=p, color = "Prototype A")) +
  geom_point(data=TypeAdata2, aes(x=conc0, y=signal, color = "Prototype A")) +

  scale_x_log10(breaks= c(1, 10, 100, 1000)) +
  xlab("Concentration (pg/mL)") + ylab("Signal") +
    geom_vline(aes(xintercept = LODest_Typeb[1], linetype = "Prototype B", color = "Prototype B")) +
    geom_vline(aes(xintercept = LODest_TypeA[1], linetype = "Prototype A", color = "Prototype A")) +
    geom_hline(aes(yintercept = LOD_abs_cutoff_Typeb, linetype = "Prototype B", color = "Prototype B")) +
    geom_hline(aes(yintercept = LOD_abs_cutoff_TypeA, linetype = "Prototype A", color = "Prototype A")) +
  theme_bw() + theme(plot.title = element_text(hjust = 0.5)) + ggtitle("Dose Response")+
  scale_linetype_manual(name = "Limits of Detection", values = c(5,4,5, 4))+
  scale_fill_manual("Test Type",breaks = c("Prototype B", "Prototype A"), values = c("Prototype A" = "#0fafc1","Prototype B" = "#4286f4"))+
  scale_color_manual("Test Type", breaks = c( "Prototype B", "Prototype A"), values =c("Prototype B" = "#4286f4",  "Prototype A" = "#0fafc1"))+  
  labs(fill='LFA Type',
       color='LOD') 

graphhoutputcombined您可以使用
guides()
设置颜色:

graphOutputCombined +
guides(linetype = guide_legend(override.aes = list(color= c("#0fafc1","#4286f4"))))

我看到您正在aes中分配字符,并重复geom_point()、geom_line()和geom_ribbon()调用。更有组织的方法是准备一个或两个数据帧,例如:

df = rbind(Typebdata,TypeAdata2)
newdata = rbind(data.frame(newdata_Typeb,group="Prototype B"),
data.frame(newdata_TypeA,group="Prototype A"))

ggplot(df, aes(x = conc0, y = signal, color = group)) +
geom_point() +
geom_ribbon(data=newdata, inherit.aes=FALSE,
aes(x=conc,ymin=pmin, ymax=pmax,fill=group ),alpha=0.2)+
geom_line(data=newdata, inherit.aes=FALSE,aes(x=conc, y=p,col=group))
上面这几行可以显示主绘图,并且更容易排除故障。

您可以使用
guides()
设置颜色:

graphOutputCombined +
guides(linetype = guide_legend(override.aes = list(color= c("#0fafc1","#4286f4"))))

我看到您正在aes中分配字符,并重复geom_point()、geom_line()和geom_ribbon()调用。更有组织的方法是准备一个或两个数据帧,例如:

df = rbind(Typebdata,TypeAdata2)
newdata = rbind(data.frame(newdata_Typeb,group="Prototype B"),
data.frame(newdata_TypeA,group="Prototype A"))

ggplot(df, aes(x = conc0, y = signal, color = group)) +
geom_point() +
geom_ribbon(data=newdata, inherit.aes=FALSE,
aes(x=conc,ymin=pmin, ymax=pmax,fill=group ),alpha=0.2)+
geom_line(data=newdata, inherit.aes=FALSE,aes(x=conc, y=p,col=group))

上面这几行代码可以让您获得主绘图,并且更容易进行故障排除。

所有代码都与您的问题相关吗?另外,你能让你的问题重现吗?是的,提供的代码与问题相关。我现在已经包含了数据,所以它是完全可复制的。我有一个提问的一般提示:尝试使用一个简单的数据集重新创建您所面临的问题。这将使我们更容易帮助你。@Ben,很抱歉没有说得更清楚。从本质上说,StupidWolf的输出正是我想要的。我唯一要改变的是,我不知道为什么在“测试类型”图例中有垂直和水平线。这似乎有点奇怪,但本质上这就是我想要的。所有的代码都与您的问题相关吗?另外,你能让你的问题重现吗?是的,提供的代码与问题相关。我现在已经包含了数据,所以它是完全可复制的。我有一个提问的一般提示:尝试使用一个简单的数据集重新创建您所面临的问题。这将使我们更容易帮助你。@Ben,很抱歉没有说得更清楚。从本质上说,StupidWolf的输出正是我想要的。我唯一要改变的是,我不知道为什么在“测试类型”图例中有垂直和水平线。这似乎有点奇怪,但本质上这就是我想要的。非常感谢。更简单更好。唯一缺少的是功能区绘图下的color=group。是否要从“测试类型”图例中获取垂直线?如果不是的话没问题,现在就开始贪婪了。真诚地感谢您的帮助。您可以扩展guides参数:guides(linetype=guide_legend(override.aes=list(color=c(“#0fafc1”),“#4286f4”)),color=guide_legend(override.aes=list(color=c(linetype=NA‘‘)’)),这是一个临时修复。如果需要重复绘制,最好对代码进行排序,并避免在aes()中提供字符串常量,非常感谢。更简单更好。唯一缺少的是功能区绘图下的color=group。是否要从“测试类型”图例中获取垂直线?如果不是的话没问题,现在就开始贪婪了。真诚地感谢您的帮助。您可以扩展guides参数:guides(linetype=guide_legend(override.aes=list(color=c(“#0fafc1”),“#4286f4”)),color=guide_legend(override.aes=list(color=c(linetype=NA‘‘)’)),这是一个临时修复。如果需要重复绘制,最好对代码进行排序,并避免在aes()中提供字符串常量