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()中提供字符串常量