Search code examples
rggplot2histogramraster

Why X-axis values of a histogram disappear when specifying the breaks?


trying to plot a raster file using ggplot2 but the x axis values disappeared. I am grateful to any help

conne <- file("C:complete.bin","rb")
sd <- readBin(conne, numeric(), size=4,  n=1440*720, signed=TRUE)
y <-t(matrix((data=sd), ncol=1440, nrow=720))
f <- hist(y, breaks=30,main="sm")
f$counts <-f$counts/sum(f$counts)
dat <- data.frame(counts= f$counts,breaks = f$mids)
ggplot(dat, aes(x = breaks, y = counts, fill =counts)) + 
    geom_bar(stat = "identity",alpha = 0.8)+
    xlab("Bi")+ 
    ylab("Frequency")+
    scale_fill_gradientn(colours = rev(rainbow(20, s = 1, v = 1, start = 0, end = 1)[1:12]))+
    ggtitle("2010")+
    theme(axis.title.x = element_text(size = 20))+
    theme(axis.title.y =  element_text(size = 20))+
    theme(plot.title = element_text(size = rel(2.5)))+
    scale_x_continuous(breaks = seq(seq(-0.5,0.5,0.1)),labels = seq(seq(-0.5,0.5,0.1)))

enter image description here


Solution

  • As @joran hinted, change the last line to

    scale_x_continuous(breaks = seq(-0.5,0.5,0.1),labels = seq(-0.5,0.5,0.1))
    

    (I think the labels argument is probably redundant in this case.) When you run seq(seq(...)) what are you getting is the result of running seq on a vector, i.e. a vector of indices from 1 to the length of your vector (11). This vector doesn't overlap the x range of your data at all, so the breaks disappear ...