Drawing minor ticks (not grid captions) in ggplot2 in the date format axis

I am trying to get some graphics for publication in black and white, and I'm having problems with the axis.

I need to build subtitles for the data on the axis (not the grid), and I found a trick around it using annotation_logticks(base=2, sides="trbl") with base 2, since my data is not log related.

But this does not work for the y axis, which is in date format (xts) format.

The graph I got so far is the one I need, all I need is to remove the background grid (this part should be simple) and add ticks along the y axis (this is the difficult part for me). enter image description here

This is the code I used to plot the graph:

 ratio_plot_start_time = "01:45" ratio_plot_end_time = "02:10" channelNo = 1 p <- ggplot(onsetratios, aes(x=ratio*100, y=onset)) + geom_point(aes(y=onset)) p <- p + ylim(as.POSIXct(paste(date, ratio_plot_start_time, sep=" ")), as.POSIXct(paste(date, ratio_plot_end_time, sep=" "))) p <- p + geom_errorbar(aes(ymin=onset-error, ymax=onset+error), width=0.0) p <- p + xlab(expression("percent of peak counts"))+ ylab(expression("UT Time (2012 May 17)")) + theme(aspect.ratio = 2/(1+sqrt(5))) p <- p + theme_bw(base_size = 14, base_family = "Helvetica") + annotate("text",x=max(onsetratios$ratio),y=as.POSIXct(paste(date, ratio_plot_end_time, sep=" ")),vjust=4,hjust=2,label=paste("F", channelNo, "'")) p <- p + annotation_logticks(base=2, sides="trbl") 

And the data used to plot the graph:

 > onsetratios ratio onset error 1 0.01092106 2012-05-17 01:49:03 19.05407 2 0.02092106 2012-05-17 01:49:35 14.89534 3 0.03092106 2012-05-17 01:51:01 12.82914 4 0.04092106 2012-05-17 01:50:22 21.45099 5 0.05092106 2012-05-17 01:50:22 21.45099 6 0.06092106 2012-05-17 01:51:13 20.09877 7 0.07092106 2012-05-17 01:51:13 20.09877 8 0.08092106 2012-05-17 01:51:13 20.09877 9 0.09092106 2012-05-17 01:51:13 20.09877 10 0.10092106 2012-05-17 01:52:34 15.53187 11 0.11092106 2012-05-17 01:53:53 14.79303 12 0.12092106 2012-05-17 01:53:53 14.79303 13 0.13092106 2012-05-17 01:53:32 17.12521 14 0.14092106 2012-05-17 01:53:32 17.12521 15 0.15092106 2012-05-17 01:53:32 17.12521 16 0.16092106 2012-05-17 01:53:32 17.12521 17 0.17092106 2012-05-17 01:46:30 36.96600 18 0.18092106 2012-05-17 01:46:30 36.96600 19 0.19092106 2012-05-17 01:46:30 36.96600 
+6
source share
1 answer

I do not recommend using annotation_logticks . Here's the intended way to do this. I deleted the header since I do not have the font installed.

Edit:

I used this function from here , and it works great, created by the manual fault design:

 onsetratios <- read.table("clipboard", head=T) onsetratios$onset <- as.POSIXct(onsetratios$onset) ratio_plot_start_time = "01:45" ratio_plot_end_time = "02:10" channelNo = 1 start_date <- as.POSIXct(paste(date, ratio_plot_start_time, sep=" ")) end_date <- as.POSIXct(paste(date, ratio_plot_end_time, sep=" ")) date <- "2012-05-17" p <- ggplot(onsetratios, aes(x=ratio*100, y=onset)) + geom_point(aes(y=onset)) + geom_errorbar(aes(ymin=onset-error, ymax=onset+error), width=0.0) + xlab(expression("percent of peak counts"))+ ylab(expression("UT Time (2012 May 17)")) + theme(aspect.ratio = 2/(1+sqrt(5))) + theme_bw(base_size = 14) + annotate("text",x=max(onsetratios$ratio),y=as.POSIXct(paste(date, ratio_plot_end_time, sep=" ")),vjust=4,hjust=2,label=paste("F", channelNo, "'")) + ylim(c(start_date, end_date)) insert_minor <- function(major_labs, n_minor) {labs <- c( sapply( major_labs, function(x) c(x, rep("", 4) ) ) ) labs[1:(length(labs)-n_minor)]} date_br1 <- seq(from = start_date, to = end_date, by = "1 min") date_br5 <- seq(from = start_date, to = end_date, by = "5 min") p + scale_x_continuous(breaks = 0:20, labels = insert_minor(seq(0, 20, by=5), 4)) + scale_y_datetime(breaks = date_br1, labels = insert_minor(format(date_br5, "%H:%M"), 4)) + theme(panel.grid.minor=element_blank(), panel.grid.major=element_blank()) 

enter image description here

+5
source

Source: https://habr.com/ru/post/973714/


All Articles