Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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 - Fatal编程技术网

R 我如何知道我在ggplot中使用的颜色代码,以添加具有相同颜色的垂直线?

R 我如何知道我在ggplot中使用的颜色代码,以添加具有相同颜色的垂直线?,r,ggplot2,R,Ggplot2,我有这样一个df: set.seed(123) df <- data.frame(Delay=rep(-5:6, times=8, each=1), ID= rep(c("A","B","C","D"), times=1, each=24), variable=rep(c("R2","SE"), times=4, each=12), value=c(0.3,0.4,0.51,0.58,0.

我有这样一个df:

set.seed(123)
df <- data.frame(Delay=rep(-5:6, times=8, each=1),
                 ID= rep(c("A","B","C","D"), times=1, each=24),
                 variable=rep(c("R2","SE"), times=4, each=12),
                 value=c(0.3,0.4,0.51,0.58,0.64,0.78,0.68,0.63,0.54,0.45,0.32,0.22,0.78,0.68,0.59,0.55,0.47,0.35,0.28,0.41,0.50,0.58,0.63,0.73,0.3,0.4,0.51,0.58,0.64,0.78,0.68,0.63,0.54,0.45,0.32,0.22,0.78,0.68,0.59,0.55,0.47,0.35,0.28,0.41,0.50,0.58,0.63,0.73,0.3,0.4,0.51,0.58,0.64,0.78,0.68,0.63,0.54,0.45,0.32,0.22,0.78,0.68,0.59,0.55,0.47,0.35,0.28,0.41,0.50,0.58,0.63,0.73,0.3,0.4,0.51,0.58,0.64,0.78,0.68,0.63,0.54,0.45,0.32,0.22,0.78,0.68,0.59,0.55,0.47,0.35,0.28,0.41,0.50,0.58,0.63,0.73))

df$ID <- as.factor(df$ID)
df$variable <- as.factor(df$variable)


Plot<-  ggplot(df[df$ID=="B",], aes(x=Delay, y=value, group=variable, colour=variable)) + 
  geom_point(size=1) + 
  geom_line () +
  theme_hc() +
  theme(legend.position="right") +
  labs(x= '\nDelay',y=expression(R^{2})) +
  guides(color=guide_legend(override.aes=list(fill=NA))) +
  scale_x_continuous(breaks=seq(-5,5,1)) + 
  scale_color_jco() 
Plot
有人知道如何使用与变量相同的颜色添加两条垂直线吗?

您不需要找到颜色来指示ggplot2重新使用它:您可以使用所需的x截距线提供新数据,并将每条v线标识为属于某个特定变量,以使用该变量的颜色

我没有您的原始绘图对象或调用,因此我的颜色/主题将不同

图书馆GGPLOT2 ggplotdf,aesDelay,值,颜色=变量+ 几何线+ geom_vlineaesxintercept=延迟,颜色=变量, data=data.frameDelay=0,变量=R2 或使用多条v型线:

ggplotdf,aesDelay,值,颜色=变量+ 几何线+ geom_vlineaesxintercept=延迟,颜色=变量, 数据=数据。帧延迟=c-1,1,2,变量=cR2,SE,R2 此编辑可能会回答此问题和其他问题:

mins您不需要找到颜色来指示ggplot2重新使用它:您可以使用所需的x截距线提供新数据,并将每个v线标识为属于特定变量,以使用该变量的颜色

我没有您的原始绘图对象或调用,因此我的颜色/主题将不同

图书馆GGPLOT2 ggplotdf,aesDelay,值,颜色=变量+ 几何线+ geom_vlineaesxintercept=延迟,颜色=变量, data=data.frameDelay=0,变量=R2 或使用多条v型线:

ggplotdf,aesDelay,值,颜色=变量+ 几何线+ geom_vlineaesxintercept=延迟,颜色=变量, 数据=数据。帧延迟=c-1,1,2,变量=cR2,SE,R2 此编辑可能会回答此问题和其他问题:


mins我认为@r2evans解决您具体问题的方法是正确的。但是,要回答关于如何从应用的颜色比例中检索颜色的更一般问题,例如,如果您想修改颜色等,您可以使用以下方法获得颜色,而无需通过ggbuild:

Plot$scales$get_scales("colour")$palette(2)
[1] "#0073C2FF" "#EFC000FF"
因此,我们可以:

# Get colours
my_blue <- Plot$scales$get_scales("colour")$palette(2)[1]
my_yellow <- Plot$scales$get_scales("colour")$palette(2)[2]

# Get index of max R2 and min SE
maxR2 <- which.max(df$value[df$ID == "B" & df$variable == "R2"])
minSE <- which.min(df$value[df$ID == "B" & df$variable == "SE"])

# Get value of Delay at maxR2 and minSE
D_R2 <- df$Delay[df$ID == "B" & df$variable == "R2"][maxR2]
D_SE <- df$Delay[df$ID == "B" & df$variable == "SE"][minSE]

# Plot lines at the correct positions and with the desired colours
Plot + geom_vline(aes(xintercept = D_R2), colour = my_blue) +
       geom_vline(aes(xintercept = D_SE), colour = my_yellow)

我认为@r2evan解决您具体问题的方法是正确的。但是,要回答关于如何从应用的颜色比例中检索颜色的更一般问题,例如,如果您想修改颜色等,您可以使用以下方法获得颜色,而无需通过ggbuild:

Plot$scales$get_scales("colour")$palette(2)
[1] "#0073C2FF" "#EFC000FF"
因此,我们可以:

# Get colours
my_blue <- Plot$scales$get_scales("colour")$palette(2)[1]
my_yellow <- Plot$scales$get_scales("colour")$palette(2)[2]

# Get index of max R2 and min SE
maxR2 <- which.max(df$value[df$ID == "B" & df$variable == "R2"])
minSE <- which.min(df$value[df$ID == "B" & df$variable == "SE"])

# Get value of Delay at maxR2 and minSE
D_R2 <- df$Delay[df$ID == "B" & df$variable == "R2"][maxR2]
D_SE <- df$Delay[df$ID == "B" & df$variable == "SE"][minSE]

# Plot lines at the correct positions and with the desired colours
Plot + geom_vline(aes(xintercept = D_R2), colour = my_blue) +
       geom_vline(aes(xintercept = D_SE), colour = my_yellow)

这可能是重复的:通常,您可以在ggplot\u buildPlot$数据中查找颜色。这可能是重复的:通常,您可以在ggplot\u buildPlot$数据中查找颜色。谢谢您的时间。我真的很感激。我更新了我的问题,因为我总结了我的问题,这可能是一个错误。现在,我分享了绘图代码和完整的数据框架,以了解我的情况。我用了theme_hc的颜色,因为它的颜色非常漂亮。我想要的是在这个例子B中选择一个ID,为这个ID绘制R2和SE,然后,为最小值SE和最大值R2添加一条垂直线。当然,我希望两条垂直线的颜色与变量的颜色相同。与之前的情况相比,有什么变化吗?我的意思是,我正在使用theme_hc,我想为一个因子水平的最小值添加垂直线,为另一个因子水平的最大值添加另一条垂直线。我不知道这是否使你的建议无效。感谢您的时间您的编辑没有任何更改,您是否尝试过使用此代码?您在本评论中提出的问题似乎是如何从其他问题中有效地找到最小值,而与如何在ggplot2中找到垂直线的颜色无关。谢谢。我不在我的阴谋前面,我可以检查你的提议。我问你只是以防万一。是的,我在另一个问题中问了这个问题,因为这是一个不同的话题。然而,我想知道这是否会改变这里的回复类型。我的另一个疑问是关于使用theme_hc。我稍后会尝试你的代码,我会告诉你。感谢againDekike,您更愿意在绘图的grob内部乱搞,而不是让ggplot2为您管理它?我认为使用ggplot2的方式更具可扩展性、灵活性、弹性,并且可能与扩展兼容。谢谢您的时间。我真的很感激。我更新了我的问题,因为我总结了我的问题,这可能是一个错误。现在,我分享了绘图代码和完整的数据框架,以了解我的情况。我用了theme_hc的颜色,因为它的颜色非常漂亮。我想要的是在这个例子B中选择一个ID,为这个ID绘制R2和SE,然后,为最小值SE和最大值R2添加一条垂直线。当然,我希望两条垂直线的颜色与变量的颜色相同。与之前的情况相比,有什么变化吗?我是说,我在
g theme_hc和我想为一个因子水平的最小值添加垂直线,为另一个因子水平的最大值添加另一条垂直线。我不知道这是否使你的建议无效。感谢您的时间您的编辑没有任何更改,您是否尝试过使用此代码?您在本评论中提出的问题似乎是如何从其他问题中有效地找到最小值,而与如何在ggplot2中找到垂直线的颜色无关。谢谢。我不在我的阴谋前面,我可以检查你的提议。我问你只是以防万一。是的,我在另一个问题中问了这个问题,因为这是一个不同的话题。然而,我想知道这是否会改变这里的回复类型。我的另一个疑问是关于使用theme_hc。我稍后会尝试你的代码,我会告诉你。感谢againDekike,您更愿意在绘图的grob内部乱搞,而不是让ggplot2为您管理它?我认为使用ggplot2的方式更具可扩展性、灵活性、弹性,并且可能与扩展兼容。谢谢@Allan Cameron。正如我刚刚对@r2evans发表的评论,我对帖子做了一点修改。起初,我总结了这篇文章,但现在我认为我不应该这样做。现在我给出了我的真实情况。我正在使用theme_hc,这有问题吗?我喜欢它使用的颜色。另一方面,正如我现在在文章中提到的,我已经解释过,我想要添加一条垂直线,表示SE的最小值,另一条表示R2的最大值,使用与变量相同的颜色。这有什么问题吗?我仍在试图找出如何表达这最后的感谢@Allan Cameron。正如我刚刚对@r2evans发表的评论,我对帖子做了一点修改。起初,我总结了这篇文章,但现在我认为我不应该这样做。现在我给出了我的真实情况。我正在使用theme_hc,这有问题吗?我喜欢它使用的颜色。另一方面,正如我现在在文章中提到的,我已经解释过,我想要添加一条垂直线,表示SE的最小值,另一条表示R2的最大值,使用与变量相同的颜色。这有什么问题吗?我仍在试图找出如何表明这一点