R/plot.R

Defines functions plot.pauli_d plot.pauli

Documented in plot.pauli plot.pauli_d

#' plot method for objects of class pauli
#'
#' @param x a pauli object
#' @param ... pass extra arguments
#'
#' @return A 2 x 2 layout of pauli frame scatter plots
#' @export
#'
#' @examples
#' pf <- pauli()
#' plot(pf)
plot.pauli <- function(x, ...){

  #Set up plot function
  plot_one <- function(y, main = main){#Test if any cells contain imaginary numbers
    if (Im(y[[1]][[1]]) != 0 || Im(y[[2]][[1]]) != 0 || Im(y[[1]][[2]]) != 0 || Im(y[[2]][[2]]) != 0){

      #Build data frame with one cell per row
      y <- data.frame(Re = c(Re(y[[1]][[1]]), Re(y[[2]][[1]]),
                             Re(y[[1]][[2]]), Re(y[[2]][[2]])),
                      Img = c(Im(y[[1]][[1]]), Im(y[[2]][[1]]),
                              Im(y[[1]][[2]]), Im(y[[2]][[2]])))

      #Plot data frame (x vs y)
      plot0 <- plot(x = y[[1]], y = y[[2]], xlab = "Real", ylab = "Img", main = main, col = c("red", "red", "blue", "blue"), pch = c(1, 1, 4, 4), ...)
    } else {
      #Plot data frame (x vs y)
      plot0 <- plot(x = y[[1]], y = y[[2]], xlab = "x", ylab = "y", main = main, ...)
    }
  }

  #Set plot grid and plot frames
  graphics::par(mfrow=c(2,2))
  invisible(lapply(names(x), function(y)plot_one(x[[y]], main = y)))
}

#' plot method for object of class pauli_d
#'
#' @param x a pauli_d object
#' @param ... pass extra arguments
#'
#' @return A 2 x 2 layout of pauli_d frame scatter plots
#' @export
#'
#' @examples
#' pf <- pauli()
#' pf2 <- opop(pf, function(x)x^2 - 1)
#' plot(pf2)
plot.pauli_d <- function(x, ...){
  #Set up plot function
  plot_one <- function(y, main = main){#Test if any cells contain imaginary numbers
    if (Im(y[[1]][[1]]) != 0 || Im(y[[2]][[1]]) != 0 || Im(y[[1]][[2]]) != 0 || Im(y[[2]][[2]]) != 0){

      #Build data frame with one cell per row
      y <- data.frame(Re = c(Re(y[[1]][[1]]), Re(y[[2]][[1]]),
                             Re(y[[1]][[2]]), Re(y[[2]][[2]])),
                      Img = c(Im(y[[1]][[1]]), Im(y[[2]][[1]]),
                              Im(y[[1]][[2]]), Im(y[[2]][[2]])))

      #Plot data frame (x vs y)
      plot0 <- plot(x = y[[1]], y = y[[2]], xlab = "Real", ylab = "Img", main = main, col = c("red", "red", "blue", "blue"), pch = c(1, 1, 4, 4), ...)
    } else {
      #Plot data frame (x vs y)
      plot0 <- plot(x = y[[1]], y = y[[2]], xlab = "x", ylab = "y", main = main, ...)
    }
  }

  #Set plot grid and plot frames
  graphics::par(mfrow=c(2,2))
  invisible(lapply(names(x), function(y)plot_one(x[[y]], main = y)))
}
mncube/pauliframes documentation built on Dec. 21, 2021, 8:07 p.m.