r - Remove unnecessary y-axis points with facet_wrap and geom_segment -


i'm mapping y-axis points x-axis using geom_segment() , using facet_wrap separate data 2 plots; however, y-axis points showing on both plots.

how can have necessary y-axis points pertaining each facet_wrap?

sample code

dat <- structure(list(temp = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3,  4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5), rev = c(-5,  -11, -20, -29, -40, -9, -20, -32, -45, -57, -12, -24, -37, -50,  -62, -7, -20, -36, -52, -67, -5, -13, -23, -35, -47, -12, -24,  -36, -48, -58), type = c("type 1", "type 1", "type 1", "type 1",  "type 1", "type 1", "type 1", "type 1", "type 1", "type 1", "type 1",  "type 1", "type 1", "type 1", "type 1", "type 2", "type 2", "type 2",  "type 2", "type 2", "type 2", "type 2", "type 2", "type 2", "type 2",  "type 2", "type 2", "type 2", "type 2", "type 2"), model = c("a",  "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "c",  "c", "a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c",  "c", "c", "c")), .names = c("temp", "rev", "type", "model"), row.names = c(na,  -30l), class = "data.frame")  p1 <- ggplot(dat, aes(temp, rev, color = model)) +    geom_line() + geom_point() + geom_segment(aes(x = 0, xend = temp, yend = rev), linetype = "dashed", color = "grey") +    facet_wrap(~type, scales = "free") + scale_y_continuous(breaks = dat$rev) p1 

plot

enter image description here

i made dummy data because reason pasting dput console made unhappy.

library(dplyr)  df <- expand.grid(temp = 1:5, model = letters[1:3], type = 1:2) %>%    group_by(model, type) %>%    mutate(rev = -sort(sample.int(20, length(temp))))   # equivalent data as-is, structurewise 

df.labeled <- df %>%    ungroup() %>% group_by(type, rev) %>%    mutate(label = c(rev[1], rep(na, length(rev) - 1))) 

here created group each y value shows in each group panel. create label column consists of 1 observation of y value, padded nas. if panel have had 2 models each had rev of -5, -5, na instead of -5, -5. why i'm doing become clearer below.


ggplot(df.labeled, aes(temp, rev, color = model)) +    geom_segment(aes(xend = 0, yend = rev), linetype = "dashed", color = "grey") +   geom_text(aes(label = label, x = -0.1), colour = "black", hjust = 1) +   geom_vline(xintercept = 0) +   geom_point() + geom_line() + facet_grid(~type) +    scale_y_continuous(breaks = null) +    scale_x_continuous(limits = c(-0.5, na)) +   theme_bw() + theme(panel.grid = element_blank()) 

enter image description here

if had left in duplicates (here have been -7, -15 type 1 , -11 type 2), geom_text have been messy bolded blur. duplicated text labels don't render in ggplot2. since it's not possible way wanted, here we're making fake scale each panel. if don't fact there's line on y-axis left of numbers, can gotten rid of:

  ... +    theme(panel.grid = element_blank(),         panel.border = element_blank(),         axis.line.x = element_line()) 

enter image description here


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -