R 基本图形中的偏差图

R 基本图形中的偏差图,r,plot,R,Plot,我需要做一个偏差图(棒棒糖图,从平均值到高于/低于平均值的线)。从这个问题和答案可以清楚地看出,我需要绘制段,然后添加点。然而,我的x轴是一个因素,解决方案失败了 这项工作: df <- data.frame(ID = c(1, 2, 3), score = c(30, 42, 48)) mid <- mean(df$score) plot(range(df$ID), range(df$score),type="n") segments(df$ID

我需要做一个偏差图(棒棒糖图,从平均值到高于/低于平均值的线)。从这个问题和答案可以清楚地看出,我需要绘制
,然后添加点。然而,我的x轴是一个因素,解决方案失败了

这项工作:

df <- data.frame(ID = c(1, 2, 3),
                 score = c(30, 42, 48))
mid <- mean(df$score)

plot(range(df$ID), range(df$score),type="n")
segments(df$ID, df$score, df$ID, mid)

df您可以转换数值变量中的因子,叠加x轴,然后将正确的标签添加到绘图中:

df$ID2 <- factor(letters[df$ID]) # Use letters to show that this is working

plot(range(as.numeric(df$ID2)), range(df$score), type = "n", xaxt = "n")
segments(as.numeric(df$ID2), df$score, as.numeric(df$ID2), mid)
axis(1, at = seq_along(levels(df$ID2)), labels = levels(df$ID2))

df$ID2您可以转换数值变量中的因子,抑制x轴,然后将正确的标签添加到绘图中:

df$ID2 <- factor(letters[df$ID]) # Use letters to show that this is working

plot(range(as.numeric(df$ID2)), range(df$score), type = "n", xaxt = "n")
segments(as.numeric(df$ID2), df$score, as.numeric(df$ID2), mid)
axis(1, at = seq_along(levels(df$ID2)), labels = levels(df$ID2))
df$ID2