Using geom_rect with facets












2















I'd like to plot a facet_grid with unbalanced observations for the combinations of variables used for facetting, e.g.



dat <- data.frame(x = 1:6, 
y = 0:5,
group = rep(c("A", "B"), each = 3),
var = rep(c("a", "a", "b"), times = 2))

> dat
group var x y
1 A a 1 0
2 A a 2 1
3 A b 3 2
4 B a 4 3
5 B a 5 4
6 B b 6 5


.. and add a geom_rect which should be the same in each facet.



ggplot(dat) +
geom_rect(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
geom_point(aes(x = x, y = y)) +
facet_grid(group~var)


enter image description here



But it seems as if several geom_rects are plotted on top of each other, even though I am not using aes() at all. How can I prevent that so that they look the same in each facet?










share|improve this question




















  • 1





    @Axeman ah thanks, copied&pasted the wrong lines ;)

    – beetroot
    Feb 28 '17 at 15:12
















2















I'd like to plot a facet_grid with unbalanced observations for the combinations of variables used for facetting, e.g.



dat <- data.frame(x = 1:6, 
y = 0:5,
group = rep(c("A", "B"), each = 3),
var = rep(c("a", "a", "b"), times = 2))

> dat
group var x y
1 A a 1 0
2 A a 2 1
3 A b 3 2
4 B a 4 3
5 B a 5 4
6 B b 6 5


.. and add a geom_rect which should be the same in each facet.



ggplot(dat) +
geom_rect(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
geom_point(aes(x = x, y = y)) +
facet_grid(group~var)


enter image description here



But it seems as if several geom_rects are plotted on top of each other, even though I am not using aes() at all. How can I prevent that so that they look the same in each facet?










share|improve this question




















  • 1





    @Axeman ah thanks, copied&pasted the wrong lines ;)

    – beetroot
    Feb 28 '17 at 15:12














2












2








2








I'd like to plot a facet_grid with unbalanced observations for the combinations of variables used for facetting, e.g.



dat <- data.frame(x = 1:6, 
y = 0:5,
group = rep(c("A", "B"), each = 3),
var = rep(c("a", "a", "b"), times = 2))

> dat
group var x y
1 A a 1 0
2 A a 2 1
3 A b 3 2
4 B a 4 3
5 B a 5 4
6 B b 6 5


.. and add a geom_rect which should be the same in each facet.



ggplot(dat) +
geom_rect(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
geom_point(aes(x = x, y = y)) +
facet_grid(group~var)


enter image description here



But it seems as if several geom_rects are plotted on top of each other, even though I am not using aes() at all. How can I prevent that so that they look the same in each facet?










share|improve this question
















I'd like to plot a facet_grid with unbalanced observations for the combinations of variables used for facetting, e.g.



dat <- data.frame(x = 1:6, 
y = 0:5,
group = rep(c("A", "B"), each = 3),
var = rep(c("a", "a", "b"), times = 2))

> dat
group var x y
1 A a 1 0
2 A a 2 1
3 A b 3 2
4 B a 4 3
5 B a 5 4
6 B b 6 5


.. and add a geom_rect which should be the same in each facet.



ggplot(dat) +
geom_rect(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
geom_point(aes(x = x, y = y)) +
facet_grid(group~var)


enter image description here



But it seems as if several geom_rects are plotted on top of each other, even though I am not using aes() at all. How can I prevent that so that they look the same in each facet?







r ggplot2






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 28 '17 at 15:10









Axeman

18.8k54357




18.8k54357










asked Feb 28 '17 at 15:03









beetrootbeetroot

6,74073262




6,74073262








  • 1





    @Axeman ah thanks, copied&pasted the wrong lines ;)

    – beetroot
    Feb 28 '17 at 15:12














  • 1





    @Axeman ah thanks, copied&pasted the wrong lines ;)

    – beetroot
    Feb 28 '17 at 15:12








1




1





@Axeman ah thanks, copied&pasted the wrong lines ;)

– beetroot
Feb 28 '17 at 15:12





@Axeman ah thanks, copied&pasted the wrong lines ;)

– beetroot
Feb 28 '17 at 15:12












2 Answers
2






active

oldest

votes


















4














Since you're not really using data to plot the rects, you should use an annotate later so it's not tied to the data or facets. For example



ggplot(dat) +
annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
geom_point(aes(x = x, y = y)) +
facet_grid(group~var)





share|improve this answer































    1














    Alternatively, supply data to the geom_rect layer:



    ggplot(dat) +
    geom_rect(aes_all(vars = c('xmin', 'xmax', 'ymin', 'ymax')), fill = "red", alpha = .3,
    data.frame(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3)) +
    geom_point(aes(x = x, y = y)) +
    facet_grid(group~var)


    enter image description here






    share|improve this answer


























    • Thanks for spotting the mistake @MarioBecerra!

      – Axeman
      Nov 21 '18 at 17:52











    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%2f42512167%2fusing-geom-rect-with-facets%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









    4














    Since you're not really using data to plot the rects, you should use an annotate later so it's not tied to the data or facets. For example



    ggplot(dat) +
    annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
    geom_point(aes(x = x, y = y)) +
    facet_grid(group~var)





    share|improve this answer




























      4














      Since you're not really using data to plot the rects, you should use an annotate later so it's not tied to the data or facets. For example



      ggplot(dat) +
      annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
      geom_point(aes(x = x, y = y)) +
      facet_grid(group~var)





      share|improve this answer


























        4












        4








        4







        Since you're not really using data to plot the rects, you should use an annotate later so it's not tied to the data or facets. For example



        ggplot(dat) +
        annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
        geom_point(aes(x = x, y = y)) +
        facet_grid(group~var)





        share|improve this answer













        Since you're not really using data to plot the rects, you should use an annotate later so it's not tied to the data or facets. For example



        ggplot(dat) +
        annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
        geom_point(aes(x = x, y = y)) +
        facet_grid(group~var)






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Feb 28 '17 at 15:14









        MrFlickMrFlick

        122k11140168




        122k11140168

























            1














            Alternatively, supply data to the geom_rect layer:



            ggplot(dat) +
            geom_rect(aes_all(vars = c('xmin', 'xmax', 'ymin', 'ymax')), fill = "red", alpha = .3,
            data.frame(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3)) +
            geom_point(aes(x = x, y = y)) +
            facet_grid(group~var)


            enter image description here






            share|improve this answer


























            • Thanks for spotting the mistake @MarioBecerra!

              – Axeman
              Nov 21 '18 at 17:52
















            1














            Alternatively, supply data to the geom_rect layer:



            ggplot(dat) +
            geom_rect(aes_all(vars = c('xmin', 'xmax', 'ymin', 'ymax')), fill = "red", alpha = .3,
            data.frame(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3)) +
            geom_point(aes(x = x, y = y)) +
            facet_grid(group~var)


            enter image description here






            share|improve this answer


























            • Thanks for spotting the mistake @MarioBecerra!

              – Axeman
              Nov 21 '18 at 17:52














            1












            1








            1







            Alternatively, supply data to the geom_rect layer:



            ggplot(dat) +
            geom_rect(aes_all(vars = c('xmin', 'xmax', 'ymin', 'ymax')), fill = "red", alpha = .3,
            data.frame(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3)) +
            geom_point(aes(x = x, y = y)) +
            facet_grid(group~var)


            enter image description here






            share|improve this answer















            Alternatively, supply data to the geom_rect layer:



            ggplot(dat) +
            geom_rect(aes_all(vars = c('xmin', 'xmax', 'ymin', 'ymax')), fill = "red", alpha = .3,
            data.frame(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3)) +
            geom_point(aes(x = x, y = y)) +
            facet_grid(group~var)


            enter image description here







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 21 '18 at 17:52









            Mario Becerra

            12519




            12519










            answered Feb 28 '17 at 15:18









            AxemanAxeman

            18.8k54357




            18.8k54357













            • Thanks for spotting the mistake @MarioBecerra!

              – Axeman
              Nov 21 '18 at 17:52



















            • Thanks for spotting the mistake @MarioBecerra!

              – Axeman
              Nov 21 '18 at 17:52

















            Thanks for spotting the mistake @MarioBecerra!

            – Axeman
            Nov 21 '18 at 17:52





            Thanks for spotting the mistake @MarioBecerra!

            – Axeman
            Nov 21 '18 at 17:52


















            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%2f42512167%2fusing-geom-rect-with-facets%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

            MongoDB - Not Authorized To Execute Command

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

            How to fix TextFormField cause rebuild widget in Flutter