Искусственное добавление квадратов ggplot в стандартный график - PullRequest
0 голосов
/ 07 августа 2020

У меня есть некоторые сомнения в одном. Насколько я могу искусственно приблизиться к ggplot, используя стандартный график? Для примера возьмем два графика ниже. Сначала создается стандартный график, а второй - ggplot.

x<-rnorm(100)
ggplot(data.frame(x),aes(x=1:100))+geom_line(aes(y=x))
as.ggplot(~plot(x,type='l'))

enter image description here

введите описание изображения здесь

Есть ли возможность добавить к изображению (1) квадраты, которые есть на изображении (2)? Как я могу скопировать как можно больше внешнего вида второго графика на первый без использования ggplot?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 07 августа 2020

Вы можете подойти очень близко, вопрос в том, зачем вам это нужно? В любом случае, попробуйте что-нибудь вроде этого:

x <- rnorm(100)

# calculate the axis limits
limitsX <- c(-1, length(x))
limitsY <- range(x) * 1.1

# get pretty ticks
tickMarksX <- pretty(0:length(x))
tickMarksY <- pretty(x)

# plot
plot(NULL, xlim=limitsX, ylim=limitsY, bty = 'n', xaxs = 'i', xaxt = 'n', yaxt = 'n', yaxs = 'i')
rect(limitsX[1], limitsY[1], limitsX[2], limitsY[2], col = "#E0E0E0", border = NA)
axis(1, at = tickMarksX, lwd = 0, ticks.lwd = 1)
axis(2, at = tickMarksY, lwd = 0, ticks.lwd = 1)

# major x grid lines
abline(v = tickMarksX, col = "white", lwd=2)
# minor x grid lines
abline(v = tickMarksX-(tickMarksX[2]-tickMarksX[1])/2, col = "white")

# major y grid lines
abline(h = tickMarksY, col = "white")
# minor y grid lines
abline(h = tickMarksY-(tickMarksY[2]-tickMarksY[1])/2, col = "white")


lines(x = 1:length(x), y = x)

введите описание изображения здесь

1 голос
/ 07 августа 2020

Вот моя попытка:

ggplot:

library(ggplot2)

set.seed(69)
df <- data.frame(x = 1:100, y = rnorm(100))

ggplot(df, aes(x, y)) + geom_line()

base R plot:

par(mar = c(5, 5, 1, 1))
plot(df$x, df$y, type = "l", xlab = "x", ylab = "y", xaxt = "n", yaxt = "n")
axis(side = 1, at = 0:4 * 25, tcl = -0.25)
axis(side = 2, las = 1, tcl = -0.25)
rect(-5, -5, 110, 110, col = "#ebebeb")
abline(v = 0:10 * 12.5, col = "white")
abline(h = seq(-3, 3, 0.5), col = "white")
lines(df$x, df$y)

Created on 2020-08-07 by the пакет реплекс (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...