Axis Color histogram date in R

I have successfully created a histogram using a date field.

hist(df.sat$created_at, breaks="hours", freq=T, xlab="Time", main="Sat Volume") 

My problem is that when I try to fill columns with col="red" , both columns and both x / y axes change to red when I need only stripes. What is the best way to fill bars?

enter image description here

Here are some details:

  > dput(df.sat$created_at[sample(c(1:9000), 50)]) structure(list(sec = c(41, 3, 13, 11, 49, 55, 19, 21, 6, 15, 54, 45, 45, 39, 50, 27, 35, 25, 22, 35, 42, 31, 45, 29, 1, 3, 8, 47, 38, 2, 13, 29, 34, 42, 15, 19, 3, 39, 41, 12, 34, 50, 15, 27, 0, 29, 47, 26, 21, 5), min = c(46L, 38L, 4L, 35L, 26L, 56L, 9L, 52L, 51L, 15L, 49L, 3L, 41L, 59L, 30L, 30L, 30L, 53L, 25L, 51L, 23L, 38L, 30L, 3L, 43L, 33L, 36L, 52L, 0L, 21L, 27L, 22L, 51L, 31L, 0L, 37L, 3L, 2L, 12L, 3L, 45L, 13L, 59L, 10L, 11L, 7L, 41L, 21L, 5L, 20L), hour = c(14L, 16L, 18L, 15L, 15L, 16L, 16L, 18L, 18L, 13L, 18L, 16L, 14L, 13L, 16L, 15L, 18L, 17L, 18L, 18L, 16L, 17L, 17L, 19L, 15L, 18L, 17L, 18L, 19L, 17L, 16L, 17L, 18L, 20L, 18L, 15L, 14L, 14L, 18L, 18L, 19L, 19L, 16L, 15L, 17L, 17L, 15L, 17L, 17L, 17L), mday = c(9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L), mon = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), year = c(111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L), wday = c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), yday = c(98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L), isdst = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt"), tzone = c("America/New_York", "EST", "EDT")) 
+6
source share
2 answers

You will have to get around it a bit by first building a histogram and axes:

 hist(Data, breaks="hours", freq=T, xlab="Time", col="red", main="Sat Volume",axes=F) Axis(Data,col="black",side=1) axis(2,col="black") 

The reason for using generic Axis() is because it takes into account that your variable is a TimeDate class. By default, Axis() does not work.


EDIT:

FYI, this behavior can only be seen with histograms where the DateTime classes are used on the X axis. The hist() function by default does not change the color of the axis when using a fill color for columns.

+6
source

Place the histogram without axes, and then add them later:

 hist(dat, breaks="hours", freq=TRUE, col = "red", axes = FALSE) axis.POSIXct(side = 1, dat) axis(2) 

histogram

+4
source

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


All Articles