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

德基

我有这样的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

我只绘制的数据B

在此处输入图片说明

我想为的最小值添加一条SE垂直线,为的最大值添加一条垂直线R2我希望线条的颜色与变量的颜色相同。但是,我不知道该怎么做。垂直线的颜色为黑色,如下图所示,所以我不知道如何指示我想要我以前使用的特定颜色。

Plot <- Plot + geom_vline(xintercept = 0)
Plot

在此处输入图片说明

有谁知道如何使用与变量相同的颜色来添加两条垂直线?

艾伦·卡梅伦

我认为@ 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)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用JavaFX LineChart添加两条垂直线

如何在ggplot中为垂直线添加图例?

如何在ggplot2中为带有图例的垂直线添加标签

使用对数刻度时如何添加垂直线?

在opencv中使用霍夫变换检测垂直线

ggplot-添加垂直线

尝试使用颜色图绘制垂直线性渐变,但仅使用前9种颜色:为什么?

使用ggplot2在多个异常点的日期时间添加垂直线

如何使用POI 4.0.1 Java向条形图添加垂直线

散景:如何添加连接点的垂直线

如何添加图例以标识ggplot中的垂直线?

如何在垂直线绘制的地方添加垂直线?[单个图中的多个分布]

如何使用ggplot2在R中的散射极坐标图中获得垂直线

虚线虚线垂直线与渐变颜色

如何使用风险表(R)向生存图添加垂直线和注释

如何使用gnuplot在标签上添加垂直线?

如何在R中使用abline()绘制简单的垂直线?

绘图:如何在绘图中添加垂直线?

如何使用带有时间序列数据的ggplot为graf添加垂直垂直线?

如何用谷歌图表烛台改变垂直线的颜色?

如何在ggplot直方图中添加代表特定观察值的垂直线

如何隐藏垂直线

如何使用HighStocks或HighCharts在图表中添加垂直线?

如何向使用 matlab 生成的混淆矩阵添加垂直线?

如何使用css在列表项旁边添加一条垂直线

如何调整我的 ggplot 代码以更改生成的图表中使用的默认颜色?

基于日期时间数据在matplotlib中使用axvline添加垂直线

我想知道如何在 ENUM 中使用 ASCII 颜色代码

在我的图中使用 matplotlib 绘制一条垂直线