I have the following code which should put a tiles around the row with y = h
.
library(tidyverse)
n_x <- 10^seq(log10(6), log10(24*365), by = 0.1)/365
n_y <- 10^seq(-1, 3, by = 0.1)
a <- tibble(x = rep(n_x, length(n_y)),
y = rep(n_y, each = length(n_x)),
z = runif(length(n_x)*length(n_y)))
h <- a$y[which.min(abs(a$y - 1.14*24))]
h.tb <- a %>%
dplyr::filter(y == h)
a %>%
ggplot(aes(x = x, y = y)) +
geom_raster(aes(fill = z)) +
scale_x_log10() +
scale_y_log10(breaks = c(1, h, 100), labels = c('1', 'h', '100')) +
geom_tile(data = h.tb, fill = NA, colour = 'black', size = 1)
But that's not what's happening...
Any help would greatly be appreciated.
1 Like
I'm not sure why it's doing what it's doing, but geom_tile
does have a height
argument that seems to be correcting if you set to 0.1, instead of 1:
library(tidyverse)
n_x <- 10^seq(log10(6), log10(24*365), by = 0.1)/365
n_y <- 10^seq(-1, 3, by = 0.1)
a <- tibble(x = rep(n_x, length(n_y)),
y = rep(n_y, each = length(n_x)),
z = runif(length(n_x)*length(n_y)))
h <- a$y[which.min(abs(a$y - 1.14*24))]
h.tb <- a %>%
dplyr::filter(y == h)
a %>%
ggplot(aes(x = x, y = y)) +
geom_raster(aes(fill = z)) +
scale_x_log10() +
scale_y_log10(breaks = c(1, h, 100), labels = c('1', 'h', '100')) +
geom_tile(data = h.tb, fill = NA, colour = 'black', size = 1, height = 0.1)
Created on 2018-07-26 by the reprex package (v0.2.0).
2 Likes
Thanks @mishabalyasin.
I noticed that when I change by = 0.1
in n_y
to some different value, the height of geom_tile
needs to be changed to that same value as well.
Ah, you are right. I didn't notice by
in the code before.
Then two things are connected , so you can set it one place and it'll work.