Функции графика в R с координатной осью и стрелками - PullRequest
2 голосов
/ 27 марта 2020

Я относительный новичок в R , поэтому, пожалуйста, прости меня, если это нубский вопрос.

Итак, есть ли пакет, который обеспечивает простой интерфейс для построения графика (реально-реально) математические функции? Мне нужна ось координат со стрелками (и их пересечение должно быть (0; 0) ) и галочками, сеткой и т. Д. c. Мне нужны такие же графики, как в этом документе .

Справочная информация: теперь я создаю функциональные графики с tikzpicture и оси от LaTeX, но я использую R для генерации рандомизированных экзаменов за несколько месяцев ( R создает текстовые -файлы и включает их в документ) и было бы неплохо, если бы R может создавать похожие графики (png, jpg), потому что ось в LaTeX очень медленная.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

С графическими инструментами R c, такими как arrows, points, abline, et c. Вы можете нарисовать практически все, что угодно.

Пример

op <- par(mar=c(1, 1, 1, 1))  ## adjust outer margins
plot(x, y, type="n", axes=F, asp=1, xlab="", ylab="")  ## asp=1 to maintain 1:1 aspect ratio
lines(x, y, lwd=2)
arrows(par()$usr[1], 0, par()$usr[2], length=.05)  ## par()$usr helps to find xlim and ylim
arrows(0, par()$usr[3], 0, par()$usr[4], length=.05)
points((-5:5)*10, rep(0, 11), pch=3, cex=.6)  ## pch=3 for crosses
points(rep(0, 11), (-5:5)*10, pch=3, cex=.6)
mtext("y", 3, -1, adj=.55, font=8)
mtext("x", 4, -1, padj=-1, las=2, font=8)
abline(h=(-5:5)*10, lty=3, col="gray")
abline(v=(-5:5)*10, lty=3, col="gray")
text(10, -4, "10", font=7, cex=.8)
text(-4, 10, "10", font=7, cex=.8)
par(op)  ## reset par

enter image description here


Данные

x <- (-10):10; y <- x^2 - 50
1 голос
/ 27 марта 2020

Я сделал вам небольшую функцию для этого

math_plot <- function(f, xlim = c(-2,2), ylim = c(-2,2), 
                      xlab = "x", ylab = "f(x)", ax.ext = .02,
                      frame.plot = F, grid.tick = .1, ...){

  curve(f, from = xlim[1], to = xlim[2], ylim = ylim, 
                      axes = F, xlab = "", ylab = "",
                      frame.plot = frame.plot, ...)

  # x-axis
  axis(1, pos = 0)
  arrows(x0 = xlim[2], x1 = xlim[2] + diff(xlim)*ax.ext, y0 = 0, length = .1)
  mtext(text = xlab, side = 4, line = 0, las = 2, at = 0)

  # y-axis
  axis(2, pos = 0, las = 2)
  arrows(y0 = ylim[2], y1 = ylim[2] + diff(ylim)*ax.ext, x0 = 0, length = .1)
  mtext(text = ylab, side = 3, line = 0, at = 0)

  grid(nx = diff(xlim)/grid.tick, ny = diff(ylim)/grid.tick)
}

# give it a function
math_plot(function(x) 3*x + 2 - 2*x^2, ylim = c(-2,4))

enter image description here

...