如何在散点图上通过两点添加一条线并删除轴刻度?

How to add a line through two points on scatter plot and remove axis scales?

我有以下数据:

> dput(all_data)
structure(list(X = structure(1:8, .Label = c("DMU 1", "DMU 2", 
"DMU 3", "DMU 4", "DMU 5", "DMU 6", "DMU 7", "DMU 8"), class = "factor"), 
    x = c(7L, 13L, 7L, 18L, 12L, 14L, 10L, 16L), y = c(7L, 5L, 
    3L, 5L, 9L, 14L, 3L, 10L)), .Names = c("X", "x", "y"), class = "data.frame", row.names = c(NA, 
-8L))

以及下图:

plot(all_data[,2], all_data[,3], ylim = c(0, 20), xlim = c(0,20),
     xlab = "Input", ylab = "Output")
text(all_data[,2], all_data[,3], labels = all_data[,1], cex = 0.7, pos = 4)

我正在尝试不抄袭地复制这张图:

已经足够接近了,但我在添加通过 DMU 1 和 DMU 6 点的线时遇到问题。

我还想删除轴刻度,因为该图仅用于概念的图形表示,不测量任何内容。 任何其他可能有助于在美学上改进它的添加都将受到赞赏。

这几乎可以满足您的需求。您可以根据需要更改 colorlinetypeabline()。感谢@thelatemail,我已经编辑了子集和拟合线性模型的方法。

plot(all_data[,2], all_data[,3], ylim = c(0, 20), xlim = c(0,20), xlab = "Input", ylab = "Output", xaxt='n', yaxt='n')
text(all_data[,2], all_data[,3], labels = all_data[,1], cex = 0.7, pos = 4)
abline(lm(y~x, data=all_data, subset=X %in% c("DMU 1","DMU 6") ))
arrows(x0=5, y0=15, x1 = 10, y1 = 10, length = 0.10, angle = 20,
        code = 2, col = par("fg"), lty = par("lty"),
        lwd = par("lwd"))
text(6, 15.5, "Efficient Frontier", cex = .8)

all_data <- structure(list(X = structure(1:8, .Label = c("DMU 1", "DMU 2","DMU 3", "DMU 4", "DMU 5", "DMU 6", "DMU 7", "DMU 8"), class = "factor"), 
                           x = c(7L, 13L, 7L, 18L, 12L, 14L, 10L, 16L),
                           y = c(7L, 5L, 3L, 5L, 9L, 14L, 3L, 10L)),
                      .Names = c("X", "x", "y"),
                      class = "data.frame", row.names = c(NA,-8L))

with(all_data, {
  par(family = 'serif')
  plot(x, y, xlim = c(0,20), ylim = c(0,20), pch = 16, bty = 'l',
       xaxt = 'n', yaxt = 'n', ann = FALSE)
  text(x, y, labels = parse(text = gsub('(....)(.)', 'italic(\1[\2])', X)),
       adj = c(0, 1.5))
  abline(0, 1, lty = 2)
  p <- par('usr')
  text(c(p[1], p[2], 10), c(p[4], p[3], p[4]), xpd = NA, adj = c(1.5, 1.5),
       labels = c('output','input', 'Efficient frontier'))
  arrows(7, 18, 10, 11, length = .1)
  mtext('Figure 1: Efficient frontier - CCR model.', font = 3,
        side = 1, line = 3, at = 2)
})