ggplot Multiple facets and combined x axis










0














I am trying to create a plot to track results over days for multiple factors. Ideally I would like my xaxis to be Day, with the day number centered in the middle of the reps for that particular day, the y axis to be result, and the facet will be the Lot (1-4). I am having difficulty making the day centered on the bottom using repeatable text, as the number of reps may vary.



I was using ideas shown in this post: Multi-row x-axis labels in ggplot line chart but have been unable to make any progress.



Here is some code I have been using and the plot that I have so far. The x axis is far too busy and I am trying to consolidate it.



data <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

library(ggplot2)

ggplot(data, aes(x = interaction(Day, Rep, lex.order = TRUE), y = Result, color = System, group = System)) +
geom_point() +
geom_line() +
theme(legend.position = "bottom") +
facet_wrap(~Lot, ncol = 1) +
geom_vline(xintercept = (which(data$Rep == 1 & data$Day != 1)), color = "gray60")


Plot so far










share|improve this question




























    0














    I am trying to create a plot to track results over days for multiple factors. Ideally I would like my xaxis to be Day, with the day number centered in the middle of the reps for that particular day, the y axis to be result, and the facet will be the Lot (1-4). I am having difficulty making the day centered on the bottom using repeatable text, as the number of reps may vary.



    I was using ideas shown in this post: Multi-row x-axis labels in ggplot line chart but have been unable to make any progress.



    Here is some code I have been using and the plot that I have so far. The x axis is far too busy and I am trying to consolidate it.



    data <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
    Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

    library(ggplot2)

    ggplot(data, aes(x = interaction(Day, Rep, lex.order = TRUE), y = Result, color = System, group = System)) +
    geom_point() +
    geom_line() +
    theme(legend.position = "bottom") +
    facet_wrap(~Lot, ncol = 1) +
    geom_vline(xintercept = (which(data$Rep == 1 & data$Day != 1)), color = "gray60")


    Plot so far










    share|improve this question


























      0












      0








      0







      I am trying to create a plot to track results over days for multiple factors. Ideally I would like my xaxis to be Day, with the day number centered in the middle of the reps for that particular day, the y axis to be result, and the facet will be the Lot (1-4). I am having difficulty making the day centered on the bottom using repeatable text, as the number of reps may vary.



      I was using ideas shown in this post: Multi-row x-axis labels in ggplot line chart but have been unable to make any progress.



      Here is some code I have been using and the plot that I have so far. The x axis is far too busy and I am trying to consolidate it.



      data <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
      Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

      library(ggplot2)

      ggplot(data, aes(x = interaction(Day, Rep, lex.order = TRUE), y = Result, color = System, group = System)) +
      geom_point() +
      geom_line() +
      theme(legend.position = "bottom") +
      facet_wrap(~Lot, ncol = 1) +
      geom_vline(xintercept = (which(data$Rep == 1 & data$Day != 1)), color = "gray60")


      Plot so far










      share|improve this question















      I am trying to create a plot to track results over days for multiple factors. Ideally I would like my xaxis to be Day, with the day number centered in the middle of the reps for that particular day, the y axis to be result, and the facet will be the Lot (1-4). I am having difficulty making the day centered on the bottom using repeatable text, as the number of reps may vary.



      I was using ideas shown in this post: Multi-row x-axis labels in ggplot line chart but have been unable to make any progress.



      Here is some code I have been using and the plot that I have so far. The x axis is far too busy and I am trying to consolidate it.



      data <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
      Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

      library(ggplot2)

      ggplot(data, aes(x = interaction(Day, Rep, lex.order = TRUE), y = Result, color = System, group = System)) +
      geom_point() +
      geom_line() +
      theme(legend.position = "bottom") +
      facet_wrap(~Lot, ncol = 1) +
      geom_vline(xintercept = (which(data$Rep == 1 & data$Day != 1)), color = "gray60")


      Plot so far







      r ggplot2 axis facet






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 12 at 23:49









      Richard Telford

      5,80242335




      5,80242335










      asked Nov 12 at 20:39









      kr32

      83




      83






















          1 Answer
          1






          active

          oldest

          votes


















          0














          I'm not 100% sure if this is exactly what you are after but this will center the day on the x-axis.



          library(dplyr)
          library(tidyr)
          library(ggplot2)

          df <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
          Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

          df <- df %>%
          unite(Day_Rep, Day, Rep, sep = ".", remove = F) %>%
          mutate(Day_Rep = as.numeric(Day_Rep))


          ggplot(df, aes(x = Day_Rep, y = Result, color = System, group = System)) +
          geom_point() +
          geom_line() +
          theme(legend.position = "bottom") +
          facet_wrap(~Lot, ncol = 1) +
          scale_x_continuous(labels = df$Day, breaks = df$Day + 0.5)+
          geom_vline(xintercept = setdiff(unique(df$Day), 1))





          share|improve this answer




















          • This does exactly what I need it to, thank you!
            – kr32
            Nov 13 at 12:58










          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%2f53269749%2fggplot-multiple-facets-and-combined-x-axis%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          I'm not 100% sure if this is exactly what you are after but this will center the day on the x-axis.



          library(dplyr)
          library(tidyr)
          library(ggplot2)

          df <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
          Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

          df <- df %>%
          unite(Day_Rep, Day, Rep, sep = ".", remove = F) %>%
          mutate(Day_Rep = as.numeric(Day_Rep))


          ggplot(df, aes(x = Day_Rep, y = Result, color = System, group = System)) +
          geom_point() +
          geom_line() +
          theme(legend.position = "bottom") +
          facet_wrap(~Lot, ncol = 1) +
          scale_x_continuous(labels = df$Day, breaks = df$Day + 0.5)+
          geom_vline(xintercept = setdiff(unique(df$Day), 1))





          share|improve this answer




















          • This does exactly what I need it to, thank you!
            – kr32
            Nov 13 at 12:58















          0














          I'm not 100% sure if this is exactly what you are after but this will center the day on the x-axis.



          library(dplyr)
          library(tidyr)
          library(ggplot2)

          df <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
          Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

          df <- df %>%
          unite(Day_Rep, Day, Rep, sep = ".", remove = F) %>%
          mutate(Day_Rep = as.numeric(Day_Rep))


          ggplot(df, aes(x = Day_Rep, y = Result, color = System, group = System)) +
          geom_point() +
          geom_line() +
          theme(legend.position = "bottom") +
          facet_wrap(~Lot, ncol = 1) +
          scale_x_continuous(labels = df$Day, breaks = df$Day + 0.5)+
          geom_vline(xintercept = setdiff(unique(df$Day), 1))





          share|improve this answer




















          • This does exactly what I need it to, thank you!
            – kr32
            Nov 13 at 12:58













          0












          0








          0






          I'm not 100% sure if this is exactly what you are after but this will center the day on the x-axis.



          library(dplyr)
          library(tidyr)
          library(ggplot2)

          df <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
          Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

          df <- df %>%
          unite(Day_Rep, Day, Rep, sep = ".", remove = F) %>%
          mutate(Day_Rep = as.numeric(Day_Rep))


          ggplot(df, aes(x = Day_Rep, y = Result, color = System, group = System)) +
          geom_point() +
          geom_line() +
          theme(legend.position = "bottom") +
          facet_wrap(~Lot, ncol = 1) +
          scale_x_continuous(labels = df$Day, breaks = df$Day + 0.5)+
          geom_vline(xintercept = setdiff(unique(df$Day), 1))





          share|improve this answer












          I'm not 100% sure if this is exactly what you are after but this will center the day on the x-axis.



          library(dplyr)
          library(tidyr)
          library(ggplot2)

          df <- data.frame(System = rep(c("A", "B"), each = 120), Lot = rep(1:4, each = 30),
          Day = rep(1:5, each = 6), Rep = rep(1:6, 40), Result = rnorm(240))

          df <- df %>%
          unite(Day_Rep, Day, Rep, sep = ".", remove = F) %>%
          mutate(Day_Rep = as.numeric(Day_Rep))


          ggplot(df, aes(x = Day_Rep, y = Result, color = System, group = System)) +
          geom_point() +
          geom_line() +
          theme(legend.position = "bottom") +
          facet_wrap(~Lot, ncol = 1) +
          scale_x_continuous(labels = df$Day, breaks = df$Day + 0.5)+
          geom_vline(xintercept = setdiff(unique(df$Day), 1))






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 12 at 22:14









          TBT8

          541158




          541158











          • This does exactly what I need it to, thank you!
            – kr32
            Nov 13 at 12:58
















          • This does exactly what I need it to, thank you!
            – kr32
            Nov 13 at 12:58















          This does exactly what I need it to, thank you!
          – kr32
          Nov 13 at 12:58




          This does exactly what I need it to, thank you!
          – kr32
          Nov 13 at 12:58

















          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.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • 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%2f53269749%2fggplot-multiple-facets-and-combined-x-axis%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

          Top Tejano songwriter Luis Silva dead of heart attack at 64

          ReactJS Fetched API data displays live - need Data displayed static

          政党