How to control chart area height without margin in ggplot?










0















Is there a way to make the chart area sizes equal in two plots?
When using these two charts in a presentation, it would be nice if
the rectangles just would split and "stay in place".



I was not able to do this by using plot.margin when creating a presentation in slidy.



unsynchronized mosaic plots










share|improve this question



















  • 1





    could you please share your code? It would be a lot easier to recreate your problem when you add a reproducible example In general the respond rate is much higher when people don't have to create there own examples first

    – mischva11
    Nov 12 '18 at 12:01















0















Is there a way to make the chart area sizes equal in two plots?
When using these two charts in a presentation, it would be nice if
the rectangles just would split and "stay in place".



I was not able to do this by using plot.margin when creating a presentation in slidy.



unsynchronized mosaic plots










share|improve this question



















  • 1





    could you please share your code? It would be a lot easier to recreate your problem when you add a reproducible example In general the respond rate is much higher when people don't have to create there own examples first

    – mischva11
    Nov 12 '18 at 12:01













0












0








0








Is there a way to make the chart area sizes equal in two plots?
When using these two charts in a presentation, it would be nice if
the rectangles just would split and "stay in place".



I was not able to do this by using plot.margin when creating a presentation in slidy.



unsynchronized mosaic plots










share|improve this question
















Is there a way to make the chart area sizes equal in two plots?
When using these two charts in a presentation, it would be nice if
the rectangles just would split and "stay in place".



I was not able to do this by using plot.margin when creating a presentation in slidy.



unsynchronized mosaic plots







r ggplot2






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 '18 at 11:19









markus

10.8k1030




10.8k1030










asked Nov 12 '18 at 10:33









Erich NeuwirthErich Neuwirth

34525




34525







  • 1





    could you please share your code? It would be a lot easier to recreate your problem when you add a reproducible example In general the respond rate is much higher when people don't have to create there own examples first

    – mischva11
    Nov 12 '18 at 12:01












  • 1





    could you please share your code? It would be a lot easier to recreate your problem when you add a reproducible example In general the respond rate is much higher when people don't have to create there own examples first

    – mischva11
    Nov 12 '18 at 12:01







1




1





could you please share your code? It would be a lot easier to recreate your problem when you add a reproducible example In general the respond rate is much higher when people don't have to create there own examples first

– mischva11
Nov 12 '18 at 12:01





could you please share your code? It would be a lot easier to recreate your problem when you add a reproducible example In general the respond rate is much higher when people don't have to create there own examples first

– mischva11
Nov 12 '18 at 12:01












2 Answers
2






active

oldest

votes


















0














Here is some code demonstrating the problem.

I would like the bottom borders of the grey chart area to be aligned.



## ------------------------------------------------------------------------
library(tidyverse)
library(ggmosaic)
library(gridExtra)

## ------------------------------------------------------------------------
pruef <- tibble::tribble(
~Geschlecht, ~Studium, ~Test, ~n,
"m", "MINT", "pos", 165L,
"w", "MINT", "pos", 60L,
"m", "HUM", "pos", 30L,
"w", "HUM", "pos", 105L,
"m", "MINT", "neg", 135L,
"w", "MINT", "neg", 40L,
"m", "HUM", "neg", 70L,
"w", "HUM", "neg", 195L
)

## ------------------------------------------------------------------------
pruef %>%
ggplot() +
geom_mosaic(aes(
x = product(Test),
weight = n,
fill = Test
), divider = "vspine") +
guides(fill = guide_legend(reverse = TRUE)) +
labs(x = "", y = "") +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank()) -> p1


## ------------------------------------------------------------------------
pruef %>%
ggplot() +
geom_mosaic(aes(x=product(Studium,Geschlecht),weight=n,fill=Test),divider=ddecker()) +
guides(fill=guide_legend(reverse=TRUE)) +
labs(x="",y="") +
theme(axis.ticks.x = element_blank(),
axis.text.x=element_text(angle=90)) ->p2

## ------------------------------------------------------------------------
grid.arrange(p1,p2,nrow=1)


enter image description here






share|improve this answer























  • This should be edited into the original post.

    – Roman
    Jan 4 at 1:08


















0















Use cowplot:



library(cowplot)
plot_grid(p1, p2, align = "h")


1



If you want the duplicate legend removed, you will need to nest your plot_grid() in another plot_grid()(a bit hacky if your plots or code change a lot).




Alternatively, trade stability for comfort and try egg:



library(egg)
ggarrange(p1 + theme(legend.position = "none"), p2, nrow = 1)


2






share|improve this answer






















    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%2f53260306%2fhow-to-control-chart-area-height-without-margin-in-ggplot%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









    0














    Here is some code demonstrating the problem.

    I would like the bottom borders of the grey chart area to be aligned.



    ## ------------------------------------------------------------------------
    library(tidyverse)
    library(ggmosaic)
    library(gridExtra)

    ## ------------------------------------------------------------------------
    pruef <- tibble::tribble(
    ~Geschlecht, ~Studium, ~Test, ~n,
    "m", "MINT", "pos", 165L,
    "w", "MINT", "pos", 60L,
    "m", "HUM", "pos", 30L,
    "w", "HUM", "pos", 105L,
    "m", "MINT", "neg", 135L,
    "w", "MINT", "neg", 40L,
    "m", "HUM", "neg", 70L,
    "w", "HUM", "neg", 195L
    )

    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(
    x = product(Test),
    weight = n,
    fill = Test
    ), divider = "vspine") +
    guides(fill = guide_legend(reverse = TRUE)) +
    labs(x = "", y = "") +
    theme(axis.text.x = element_blank(),
    axis.ticks.x = element_blank()) -> p1


    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(x=product(Studium,Geschlecht),weight=n,fill=Test),divider=ddecker()) +
    guides(fill=guide_legend(reverse=TRUE)) +
    labs(x="",y="") +
    theme(axis.ticks.x = element_blank(),
    axis.text.x=element_text(angle=90)) ->p2

    ## ------------------------------------------------------------------------
    grid.arrange(p1,p2,nrow=1)


    enter image description here






    share|improve this answer























    • This should be edited into the original post.

      – Roman
      Jan 4 at 1:08















    0














    Here is some code demonstrating the problem.

    I would like the bottom borders of the grey chart area to be aligned.



    ## ------------------------------------------------------------------------
    library(tidyverse)
    library(ggmosaic)
    library(gridExtra)

    ## ------------------------------------------------------------------------
    pruef <- tibble::tribble(
    ~Geschlecht, ~Studium, ~Test, ~n,
    "m", "MINT", "pos", 165L,
    "w", "MINT", "pos", 60L,
    "m", "HUM", "pos", 30L,
    "w", "HUM", "pos", 105L,
    "m", "MINT", "neg", 135L,
    "w", "MINT", "neg", 40L,
    "m", "HUM", "neg", 70L,
    "w", "HUM", "neg", 195L
    )

    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(
    x = product(Test),
    weight = n,
    fill = Test
    ), divider = "vspine") +
    guides(fill = guide_legend(reverse = TRUE)) +
    labs(x = "", y = "") +
    theme(axis.text.x = element_blank(),
    axis.ticks.x = element_blank()) -> p1


    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(x=product(Studium,Geschlecht),weight=n,fill=Test),divider=ddecker()) +
    guides(fill=guide_legend(reverse=TRUE)) +
    labs(x="",y="") +
    theme(axis.ticks.x = element_blank(),
    axis.text.x=element_text(angle=90)) ->p2

    ## ------------------------------------------------------------------------
    grid.arrange(p1,p2,nrow=1)


    enter image description here






    share|improve this answer























    • This should be edited into the original post.

      – Roman
      Jan 4 at 1:08













    0












    0








    0







    Here is some code demonstrating the problem.

    I would like the bottom borders of the grey chart area to be aligned.



    ## ------------------------------------------------------------------------
    library(tidyverse)
    library(ggmosaic)
    library(gridExtra)

    ## ------------------------------------------------------------------------
    pruef <- tibble::tribble(
    ~Geschlecht, ~Studium, ~Test, ~n,
    "m", "MINT", "pos", 165L,
    "w", "MINT", "pos", 60L,
    "m", "HUM", "pos", 30L,
    "w", "HUM", "pos", 105L,
    "m", "MINT", "neg", 135L,
    "w", "MINT", "neg", 40L,
    "m", "HUM", "neg", 70L,
    "w", "HUM", "neg", 195L
    )

    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(
    x = product(Test),
    weight = n,
    fill = Test
    ), divider = "vspine") +
    guides(fill = guide_legend(reverse = TRUE)) +
    labs(x = "", y = "") +
    theme(axis.text.x = element_blank(),
    axis.ticks.x = element_blank()) -> p1


    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(x=product(Studium,Geschlecht),weight=n,fill=Test),divider=ddecker()) +
    guides(fill=guide_legend(reverse=TRUE)) +
    labs(x="",y="") +
    theme(axis.ticks.x = element_blank(),
    axis.text.x=element_text(angle=90)) ->p2

    ## ------------------------------------------------------------------------
    grid.arrange(p1,p2,nrow=1)


    enter image description here






    share|improve this answer













    Here is some code demonstrating the problem.

    I would like the bottom borders of the grey chart area to be aligned.



    ## ------------------------------------------------------------------------
    library(tidyverse)
    library(ggmosaic)
    library(gridExtra)

    ## ------------------------------------------------------------------------
    pruef <- tibble::tribble(
    ~Geschlecht, ~Studium, ~Test, ~n,
    "m", "MINT", "pos", 165L,
    "w", "MINT", "pos", 60L,
    "m", "HUM", "pos", 30L,
    "w", "HUM", "pos", 105L,
    "m", "MINT", "neg", 135L,
    "w", "MINT", "neg", 40L,
    "m", "HUM", "neg", 70L,
    "w", "HUM", "neg", 195L
    )

    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(
    x = product(Test),
    weight = n,
    fill = Test
    ), divider = "vspine") +
    guides(fill = guide_legend(reverse = TRUE)) +
    labs(x = "", y = "") +
    theme(axis.text.x = element_blank(),
    axis.ticks.x = element_blank()) -> p1


    ## ------------------------------------------------------------------------
    pruef %>%
    ggplot() +
    geom_mosaic(aes(x=product(Studium,Geschlecht),weight=n,fill=Test),divider=ddecker()) +
    guides(fill=guide_legend(reverse=TRUE)) +
    labs(x="",y="") +
    theme(axis.ticks.x = element_blank(),
    axis.text.x=element_text(angle=90)) ->p2

    ## ------------------------------------------------------------------------
    grid.arrange(p1,p2,nrow=1)


    enter image description here







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 12 '18 at 12:31









    Erich NeuwirthErich Neuwirth

    34525




    34525












    • This should be edited into the original post.

      – Roman
      Jan 4 at 1:08

















    • This should be edited into the original post.

      – Roman
      Jan 4 at 1:08
















    This should be edited into the original post.

    – Roman
    Jan 4 at 1:08





    This should be edited into the original post.

    – Roman
    Jan 4 at 1:08













    0















    Use cowplot:



    library(cowplot)
    plot_grid(p1, p2, align = "h")


    1



    If you want the duplicate legend removed, you will need to nest your plot_grid() in another plot_grid()(a bit hacky if your plots or code change a lot).




    Alternatively, trade stability for comfort and try egg:



    library(egg)
    ggarrange(p1 + theme(legend.position = "none"), p2, nrow = 1)


    2






    share|improve this answer



























      0















      Use cowplot:



      library(cowplot)
      plot_grid(p1, p2, align = "h")


      1



      If you want the duplicate legend removed, you will need to nest your plot_grid() in another plot_grid()(a bit hacky if your plots or code change a lot).




      Alternatively, trade stability for comfort and try egg:



      library(egg)
      ggarrange(p1 + theme(legend.position = "none"), p2, nrow = 1)


      2






      share|improve this answer

























        0












        0








        0








        Use cowplot:



        library(cowplot)
        plot_grid(p1, p2, align = "h")


        1



        If you want the duplicate legend removed, you will need to nest your plot_grid() in another plot_grid()(a bit hacky if your plots or code change a lot).




        Alternatively, trade stability for comfort and try egg:



        library(egg)
        ggarrange(p1 + theme(legend.position = "none"), p2, nrow = 1)


        2






        share|improve this answer














        Use cowplot:



        library(cowplot)
        plot_grid(p1, p2, align = "h")


        1



        If you want the duplicate legend removed, you will need to nest your plot_grid() in another plot_grid()(a bit hacky if your plots or code change a lot).




        Alternatively, trade stability for comfort and try egg:



        library(egg)
        ggarrange(p1 + theme(legend.position = "none"), p2, nrow = 1)


        2







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 4 at 1:07









        RomanRoman

        1,7761324




        1,7761324



























            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%2f53260306%2fhow-to-control-chart-area-height-without-margin-in-ggplot%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

            How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

            Syphilis

            Darth Vader #20