R自定义符号的符号背景

DP.*_*DP. 5 graphics plot r

我有一个R图,我使用这些值作为符号.这些点也有错误条: 在此输入图像描述

显然,问题是错误栏(我使用箭头)穿过数字而且看起来很难看并且难以阅读.

这是我的代码,任何想法?

x = c(45.58333, 89.83333, 114.03333,138.65000,161.50000,185.15000,191.50000)
y_mean = c(3.350000,6.450000,7.200000,7.033333,8.400000,7.083333,6.750000)
y_sd = c(0.1802776,0.1732051,0.2500000,0.2020726,0.3500000,0.2020726,0.1000000)

values = data.frame(x, y_mean, y_sd)

plot(values$x, values$y_mean, type="n")

arrows(values$x, values$y_mean - values$y_sd, 
  values$x, values$y_mean + values$y_sd, 
  length=0.05, angle=90,
  code=3, col="red")

lines(values$x, values$y_mean, type="b",
  pch=" ",
  col="red", bg="white")

text(values$x, values$y_mean, label=round(values$y_mean), col="red")
Run Code Online (Sandbox Code Playgroud)

编辑:我按照要求执行了上面显示的确切代码: 在此输入图像描述

bgo*_*dst 2

一种想法是在绘制文本之前将要绘制文本的绘图内容涂白。这可以通过 来完成rect()。尽管使用这种方法可能会冒完全消除误差线的风险。

我们可以使用strwidth()strheight()来获得遮白矩形的适当尺寸。

x <- c(45.58333, 89.83333, 114.03333,138.65000,161.50000,185.15000,191.50000);
y_mean <- c(3.350000,6.450000,7.200000,7.033333,8.400000,7.083333,6.750000);
y_sd <- c(0.1802776,0.1732051,0.2500000,0.2020726,0.3500000,0.2020726,0.1000000);
xlim <- range(x);
ylim <- c(min(y_mean-y_sd),max(y_mean+y_sd));
plot(NA,xlim=xlim,ylim=ylim,xlab='x',ylab='y');
arrows(x,y_mean-y_sd,x,y_mean+y_sd,length=0.05,angle=90,code=3,col='red');
lines(x,y_mean,type='b',pch=' ',col='red',bg='white');
ls <- as.character(round(y_mean));
ex <- 0.4; ## whiteout expansion factor
lsw <- strwidth(ls); w <- lsw/2*(1+ex);
lsh <- strheight(ls); h <- lsh/2*(1+ex);
rect(x-w,y_mean-h,x+w,y_mean+h,col='white',border=NA);
text(x,y_mean,ls,col='red');
Run Code Online (Sandbox Code Playgroud)

阴谋