Как построить несколько графиков, разделяющих обе оси x и y в формате два на два в R?

Я хотел бы представить свои данные в формате два на два. Четыре графика должны иметь одинаковую ось Y и X. Я хотел бы, чтобы ось y и x также пометили внешнюю ось. Мои проблемы заключались в подавлении меток x и y, которые поставляются с основными plot()в R. Я использую yaxt="n" а также xaxt="n" но это не тренировка.

x <- c(1, 4, 5, 5)  #fake data
y <- c(2, 4, 5, 4)  #fake data
data <- data.frame(x, y)  #fake data

plot_data1 <- function(data, ymax) {
    par(pty = "s")  # make the plot a square
    plot(data, type = "l", lwd = 2, xaxt = "n", yaxt = "n", xaxs = "i", yaxs = "i", ylim = c(0, ymax))
    my_at <- c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
    axis(side = 1, at = my_at, outer = TRUE)
    axis(side = 2, outer = TRUE)
}

plot_data2 <- function(data, ymax) {
    par(pty = "s")
    plot(data, type = "l", lwd = 2, xaxt = "n", yaxt = "n", xaxs = "i", yaxs = "i", ylim = c(0, ymax))
    my_at <- c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
    # axis(side=1, at= my_at, outer=TRUE) axis(side=2, outer=TRUE)        
}

plot_data3 <- function(data, ymax) {
    par(pty = "s")
    plot(data, type = "l", lwd = 2, xaxt = "n", yaxt = "n", xaxs = "i", yaxs = "i", ylim = c(0, ymax))
    my_at <- c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
    axis(side = 1, at = my_at, outer = TRUE)
    axis(side = 2, outer = TRUE)        
}

plot_data4 <- function(data, ymax) {
    par(pty = "s")
    plot(data, type = "l", lwd = 2, xaxt = "n", yaxt = "n", xaxs = "i", yaxs = "i", ylim = c(0, ymax))
    my_at <- c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
    axis(side = 1, at = my_at, outer = TRUE)
    # axis(side=2, outer=TRUE)
}

twobytwo <- function(data, ymax) {        
    nf <- layout(matrix(c(1, 2, 3, 4), 2, 2, byrow = TRUE), respect = TRUE)  # for the two by two layout
    layout.show(nf)  # the two by two layout we want 
    nf
    plot_data1(data, ymax)
    plot_data2(data, ymax)
    plot_data3(data, ymax)
    plot_data4(data, ymax)
    title(xlab = "Age (years)", ylab = "Probability Density", outer = TRUE, line = 3)
}

twobytwo(data, ymax = 9) 

Графики отображаются с метками x и y, хотя я подавил их с помощью `yaxt="n". Что нужно настроить, чтобы получить четыре аккуратных графика на графике два на два с указанием оси x и оси y?

0 ответов

Другие вопросы по тегам