# Creating a plot from scratch

When setting up a plot to later add further elements to, generally your life will be made easier if you still use the `plot3js()` function to achieve basic plot setup but do not supply and x, y or z data to plot.

However it is of course possible to call the lower level functions that `plot3js()` uses but to call them directly as demonstrated in a simple example below.

    library(r3js)

    # Generate data
    x <- runif(20, 0, 10)
    y <- runif(20, 0, 20)
    z <- runif(20, 0, 1)

    # Initialise new plot
    data3js <- plot3js.new()

    # Set plot dimensions and aspect ratios
    data3js <- plot3js.window(
      data3js,
      xlim = c(0,10),
      ylim = c(0,20),
      zlim = c(0,1),
      aspect = c(1, 1, 1)
    )

    # Add box
    data3js <- box3js(data3js, col = "grey50")

    # Add axes
    data3js <- axis3js(data3js, side = "x")
    data3js <- axis3js(data3js, side = "y")
    data3js <- axis3js(data3js, side = "z")

    # Add axes grids
    data3js <- grid3js(data3js, col = "grey80")

    # Plot points
    data3js <- points3js(data3js, x, y, z, col = rainbow(20))

    # Show the plot
    r3js(data3js)