R语言绘图:相同因子位置下在C、D两值间绘制垂直线段实现方案
实现方案
你可以使用R基础绘图的segments()函数绘制指定位置的垂直竖线,完整可运行代码如下:
set.seed(42) names <- c(5, 5, 10, 10, 15) A <- sample(5) + 10; B <- sample(5) + 10; C <- sample(5) + 5; D <- sample(5) data <- data.frame(names, A, B, C, D) # 初始化绘图区域,ylim需覆盖所有取值范围避免内容被截断 plot(data$A, col="blue", ylim = range(c(data$A, data$B, data$C, data$D)), xlab = "因子索引", ylab = "取值") # 绘制B组的点 points(data$B, col="red") # 逐位置绘制从D取值到C取值的垂直竖线 segments(x0 = 1:nrow(data), y0 = data$D, x1 = 1:nrow(data), y1 = data$C, col = "gray")
补充说明
segments函数只要将x0和x1设为相同值,就可以绘制垂直竖线,y0和y1分别对应竖线的上下端点- 如果需要调整竖线样式,可以给
segments添加额外参数:lwd调整线宽、lty调整线型 - 如果你需要用原始的因子值作为横坐标,可以使用以下版本的代码:
# 以因子值为横坐标的版本 x_pos <- as.numeric(as.factor(data$names)) plot(x_pos, data$A, col="blue", ylim = range(c(data$A, data$B, data$C, data$D)), xlab = "因子", ylab = "取值", xaxt = "n") # 自定义横坐标标签 axis(1, at = unique(x_pos), labels = unique(data$names)) points(x_pos, data$B, col="red") segments(x0 = x_pos, y0 = data$D, x1 = x_pos, y1 = data$C, col = "gray")
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

