How to plot a plane from an equation in R












1















I've been tinkering with the RGL package to figure out how to plot a plane from an equation in R, to no avail.



For example, I would like to visualize the following plane:



1x + 0y + 0z = 2
0x + 1y + 0z = 3
0x + 0y + 1z = 4


It seems the rgl's planes3d function only adds a plane to an existing 3D plot.










share|improve this question

























  • What did you try so far? Please add some code to your question.

    – user3710546
    Jun 21 '15 at 2:12






  • 2





    The system of equations you provided is a single point, unless all three are independent and make up three separate planes.

    – Max Candocia
    Jun 21 '15 at 2:56
















1















I've been tinkering with the RGL package to figure out how to plot a plane from an equation in R, to no avail.



For example, I would like to visualize the following plane:



1x + 0y + 0z = 2
0x + 1y + 0z = 3
0x + 0y + 1z = 4


It seems the rgl's planes3d function only adds a plane to an existing 3D plot.










share|improve this question

























  • What did you try so far? Please add some code to your question.

    – user3710546
    Jun 21 '15 at 2:12






  • 2





    The system of equations you provided is a single point, unless all three are independent and make up three separate planes.

    – Max Candocia
    Jun 21 '15 at 2:56














1












1








1


1






I've been tinkering with the RGL package to figure out how to plot a plane from an equation in R, to no avail.



For example, I would like to visualize the following plane:



1x + 0y + 0z = 2
0x + 1y + 0z = 3
0x + 0y + 1z = 4


It seems the rgl's planes3d function only adds a plane to an existing 3D plot.










share|improve this question
















I've been tinkering with the RGL package to figure out how to plot a plane from an equation in R, to no avail.



For example, I would like to visualize the following plane:



1x + 0y + 0z = 2
0x + 1y + 0z = 3
0x + 0y + 1z = 4


It seems the rgl's planes3d function only adds a plane to an existing 3D plot.







r 3d visualization rgl






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jun 21 '15 at 2:39







matsuo_basho

















asked Jun 21 '15 at 2:08









matsuo_bashomatsuo_basho

5861127




5861127













  • What did you try so far? Please add some code to your question.

    – user3710546
    Jun 21 '15 at 2:12






  • 2





    The system of equations you provided is a single point, unless all three are independent and make up three separate planes.

    – Max Candocia
    Jun 21 '15 at 2:56



















  • What did you try so far? Please add some code to your question.

    – user3710546
    Jun 21 '15 at 2:12






  • 2





    The system of equations you provided is a single point, unless all three are independent and make up three separate planes.

    – Max Candocia
    Jun 21 '15 at 2:56

















What did you try so far? Please add some code to your question.

– user3710546
Jun 21 '15 at 2:12





What did you try so far? Please add some code to your question.

– user3710546
Jun 21 '15 at 2:12




2




2





The system of equations you provided is a single point, unless all three are independent and make up three separate planes.

– Max Candocia
Jun 21 '15 at 2:56





The system of equations you provided is a single point, unless all three are independent and make up three separate planes.

– Max Candocia
Jun 21 '15 at 2:56












2 Answers
2






active

oldest

votes


















7














Here is a simple example:



library(rgl)
# Create some dummy data
dat <- replicate(2, 1:3)

# Initialize the scene, no data plotted
plot3d(dat, type = 'n', xlim = c(-1, 1), ylim = c(-1, 1), zlim = c(-3, 3), xlab = '', ylab = '', zlab = '')

# Add planes
planes3d(1, 1, 1, 0, col = 'red', alpha = 0.6)
planes3d(1, -1, 1, 0, col = 'orange', alpha = 0.6)
planes3d(1, -1, -1, -0.8, col = 'blue', alpha = 0.6)


Which gives the following result.



plane plot



As you can see, it is quite hard to understand the spatial structure from such a plot, but the interactivity of course helps. Alternatively you can plot the planes as wireframes, which will sometimes help in understanding the spatial structure:



# Evaluate planes
n <- 20
x <- y <- seq(-1, 1, length = n)
region <- expand.grid(x = x, y = y)

z1 <- matrix(-(region$x + region$y), n, n)
z2 <- matrix(-region$x + region$y, n, n)
z3 <- matrix(region$x - region$y - 0.8, n, n)

surface3d(x, y, z1, back = 'line', front = 'line', col = 'red', lwd = 1.5, alpha = 0.4)
surface3d(x, y, z2, back = 'line', front = 'line', col = 'orange', lwd = 1.5, alpha = 0.4)
surface3d(x, y, z3, back = 'line', front = 'line', col = 'blue', lwd = 1.5, alpha = 0.4)
axes3d()


wireframe planes






share|improve this answer































    2














    If you want to plot, e.g., a plane defined by the equation 2*x+y-z-3=0, you could do this in the following way:



    x <- y <- seq(-10, 10, length= 30)
    f <- function(x,y){ z <- x*2 + y -3 }
    z <- outer(x,y,f)
    persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")


    For more examples see ?persp.
    This is the output






    share|improve this answer
























    • RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

      – matsuo_basho
      Jun 21 '15 at 15:55













    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f30960620%2fhow-to-plot-a-plane-from-an-equation-in-r%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    7














    Here is a simple example:



    library(rgl)
    # Create some dummy data
    dat <- replicate(2, 1:3)

    # Initialize the scene, no data plotted
    plot3d(dat, type = 'n', xlim = c(-1, 1), ylim = c(-1, 1), zlim = c(-3, 3), xlab = '', ylab = '', zlab = '')

    # Add planes
    planes3d(1, 1, 1, 0, col = 'red', alpha = 0.6)
    planes3d(1, -1, 1, 0, col = 'orange', alpha = 0.6)
    planes3d(1, -1, -1, -0.8, col = 'blue', alpha = 0.6)


    Which gives the following result.



    plane plot



    As you can see, it is quite hard to understand the spatial structure from such a plot, but the interactivity of course helps. Alternatively you can plot the planes as wireframes, which will sometimes help in understanding the spatial structure:



    # Evaluate planes
    n <- 20
    x <- y <- seq(-1, 1, length = n)
    region <- expand.grid(x = x, y = y)

    z1 <- matrix(-(region$x + region$y), n, n)
    z2 <- matrix(-region$x + region$y, n, n)
    z3 <- matrix(region$x - region$y - 0.8, n, n)

    surface3d(x, y, z1, back = 'line', front = 'line', col = 'red', lwd = 1.5, alpha = 0.4)
    surface3d(x, y, z2, back = 'line', front = 'line', col = 'orange', lwd = 1.5, alpha = 0.4)
    surface3d(x, y, z3, back = 'line', front = 'line', col = 'blue', lwd = 1.5, alpha = 0.4)
    axes3d()


    wireframe planes






    share|improve this answer




























      7














      Here is a simple example:



      library(rgl)
      # Create some dummy data
      dat <- replicate(2, 1:3)

      # Initialize the scene, no data plotted
      plot3d(dat, type = 'n', xlim = c(-1, 1), ylim = c(-1, 1), zlim = c(-3, 3), xlab = '', ylab = '', zlab = '')

      # Add planes
      planes3d(1, 1, 1, 0, col = 'red', alpha = 0.6)
      planes3d(1, -1, 1, 0, col = 'orange', alpha = 0.6)
      planes3d(1, -1, -1, -0.8, col = 'blue', alpha = 0.6)


      Which gives the following result.



      plane plot



      As you can see, it is quite hard to understand the spatial structure from such a plot, but the interactivity of course helps. Alternatively you can plot the planes as wireframes, which will sometimes help in understanding the spatial structure:



      # Evaluate planes
      n <- 20
      x <- y <- seq(-1, 1, length = n)
      region <- expand.grid(x = x, y = y)

      z1 <- matrix(-(region$x + region$y), n, n)
      z2 <- matrix(-region$x + region$y, n, n)
      z3 <- matrix(region$x - region$y - 0.8, n, n)

      surface3d(x, y, z1, back = 'line', front = 'line', col = 'red', lwd = 1.5, alpha = 0.4)
      surface3d(x, y, z2, back = 'line', front = 'line', col = 'orange', lwd = 1.5, alpha = 0.4)
      surface3d(x, y, z3, back = 'line', front = 'line', col = 'blue', lwd = 1.5, alpha = 0.4)
      axes3d()


      wireframe planes






      share|improve this answer


























        7












        7








        7







        Here is a simple example:



        library(rgl)
        # Create some dummy data
        dat <- replicate(2, 1:3)

        # Initialize the scene, no data plotted
        plot3d(dat, type = 'n', xlim = c(-1, 1), ylim = c(-1, 1), zlim = c(-3, 3), xlab = '', ylab = '', zlab = '')

        # Add planes
        planes3d(1, 1, 1, 0, col = 'red', alpha = 0.6)
        planes3d(1, -1, 1, 0, col = 'orange', alpha = 0.6)
        planes3d(1, -1, -1, -0.8, col = 'blue', alpha = 0.6)


        Which gives the following result.



        plane plot



        As you can see, it is quite hard to understand the spatial structure from such a plot, but the interactivity of course helps. Alternatively you can plot the planes as wireframes, which will sometimes help in understanding the spatial structure:



        # Evaluate planes
        n <- 20
        x <- y <- seq(-1, 1, length = n)
        region <- expand.grid(x = x, y = y)

        z1 <- matrix(-(region$x + region$y), n, n)
        z2 <- matrix(-region$x + region$y, n, n)
        z3 <- matrix(region$x - region$y - 0.8, n, n)

        surface3d(x, y, z1, back = 'line', front = 'line', col = 'red', lwd = 1.5, alpha = 0.4)
        surface3d(x, y, z2, back = 'line', front = 'line', col = 'orange', lwd = 1.5, alpha = 0.4)
        surface3d(x, y, z3, back = 'line', front = 'line', col = 'blue', lwd = 1.5, alpha = 0.4)
        axes3d()


        wireframe planes






        share|improve this answer













        Here is a simple example:



        library(rgl)
        # Create some dummy data
        dat <- replicate(2, 1:3)

        # Initialize the scene, no data plotted
        plot3d(dat, type = 'n', xlim = c(-1, 1), ylim = c(-1, 1), zlim = c(-3, 3), xlab = '', ylab = '', zlab = '')

        # Add planes
        planes3d(1, 1, 1, 0, col = 'red', alpha = 0.6)
        planes3d(1, -1, 1, 0, col = 'orange', alpha = 0.6)
        planes3d(1, -1, -1, -0.8, col = 'blue', alpha = 0.6)


        Which gives the following result.



        plane plot



        As you can see, it is quite hard to understand the spatial structure from such a plot, but the interactivity of course helps. Alternatively you can plot the planes as wireframes, which will sometimes help in understanding the spatial structure:



        # Evaluate planes
        n <- 20
        x <- y <- seq(-1, 1, length = n)
        region <- expand.grid(x = x, y = y)

        z1 <- matrix(-(region$x + region$y), n, n)
        z2 <- matrix(-region$x + region$y, n, n)
        z3 <- matrix(region$x - region$y - 0.8, n, n)

        surface3d(x, y, z1, back = 'line', front = 'line', col = 'red', lwd = 1.5, alpha = 0.4)
        surface3d(x, y, z2, back = 'line', front = 'line', col = 'orange', lwd = 1.5, alpha = 0.4)
        surface3d(x, y, z3, back = 'line', front = 'line', col = 'blue', lwd = 1.5, alpha = 0.4)
        axes3d()


        wireframe planes







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jul 13 '15 at 11:23









        Lars Lau RaketLars Lau Raket

        1,3011327




        1,3011327

























            2














            If you want to plot, e.g., a plane defined by the equation 2*x+y-z-3=0, you could do this in the following way:



            x <- y <- seq(-10, 10, length= 30)
            f <- function(x,y){ z <- x*2 + y -3 }
            z <- outer(x,y,f)
            persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")


            For more examples see ?persp.
            This is the output






            share|improve this answer
























            • RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

              – matsuo_basho
              Jun 21 '15 at 15:55


















            2














            If you want to plot, e.g., a plane defined by the equation 2*x+y-z-3=0, you could do this in the following way:



            x <- y <- seq(-10, 10, length= 30)
            f <- function(x,y){ z <- x*2 + y -3 }
            z <- outer(x,y,f)
            persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")


            For more examples see ?persp.
            This is the output






            share|improve this answer
























            • RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

              – matsuo_basho
              Jun 21 '15 at 15:55
















            2












            2








            2







            If you want to plot, e.g., a plane defined by the equation 2*x+y-z-3=0, you could do this in the following way:



            x <- y <- seq(-10, 10, length= 30)
            f <- function(x,y){ z <- x*2 + y -3 }
            z <- outer(x,y,f)
            persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")


            For more examples see ?persp.
            This is the output






            share|improve this answer













            If you want to plot, e.g., a plane defined by the equation 2*x+y-z-3=0, you could do this in the following way:



            x <- y <- seq(-10, 10, length= 30)
            f <- function(x,y){ z <- x*2 + y -3 }
            z <- outer(x,y,f)
            persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")


            For more examples see ?persp.
            This is the output







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Jun 21 '15 at 6:11









            RHertelRHertel

            18.1k52043




            18.1k52043













            • RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

              – matsuo_basho
              Jun 21 '15 at 15:55





















            • RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

              – matsuo_basho
              Jun 21 '15 at 15:55



















            RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

            – matsuo_basho
            Jun 21 '15 at 15:55







            RHertel, that is quite helpful and is a great start. Now, what I'm really looking for is the ability to plot a couple of planes (for the purposes of visualizing where they meet, etc).. It looks like the persp function doesn't allow me to add another plane. Additionally, I would ideally like to be able to see the central axes labeled, as well as ability to rotate the image (as the rgl package allows). Thanks.

            – matsuo_basho
            Jun 21 '15 at 15:55




















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f30960620%2fhow-to-plot-a-plane-from-an-equation-in-r%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Full-time equivalent

            Bicuculline

            さくらももこ