hour_mark avg_intensity
<int> <dbl>
0 2.1295503
1 1.4190782
2 1.0439443
3 0.4437299
4 0.6330472
5 4.9506438
6 7.7712137
7 10.7336198
8 14.6680988
9 15.3877551
10 17.6437029
11 16.9212513
12 19.8470716
13 18.7752443
14 18.8686211
15 15.5846995
16 17.7166483
17 21.6556291
18 21.9216336
19 21.3852097
20 14.3399558
21 12.0729282
22 9.0630531
23 4.9966777
ggplot(data=avg_int_hourly,
aes(x=hour_mark,
y=avg_intensity,group=1))
geom_line(color="red")
geom_point()
scale_x_discrete(labels=hour_mark)
labs(title='Average Intensity Each Hour of the Day')
xlab('Hours of Day')
ylab('Average Intensity')
I would like to represent all 24 hours of day in the x-axis so I tried scale_x_discrete and scale_x_continuous using the defined x (hour_mark) but R can't find the object:
Error in check_breaks_labels(breaks, labels): object 'hour_mark' not found
Traceback:
1. scale_x_discrete(labels = hour_mark)
2. discrete_scale(c("x", "xmin", "xmax", "xend"), "position_d",
. identity, ..., expand = expand, guide = guide, position = position,
. super = ScaleDiscretePosition)
3. check_breaks_labels(breaks, labels)
Please help!
CodePudding user response:
Two things:
scale_x_discrete
needs a discrete value, you've provided a continuous one with a numeric column. We can force this by usingfactor
. (Note that while this works below, if the data is not ordered in a number-like fashion, then our call tofactor
might need to be explicit withfactor(., levels=)
.)scale_*
functions do not do non-standard evaluation the same as thegeom_*
functions, one needs to pass explicit vectors/objects. Technically we don't need this here, but I'll include what one could do for more control (commented out).
ggplot(data=avg_int_hourly,
aes(x=factor(hour_mark),
y=avg_intensity,group=1))
geom_line(color="red")
geom_point()
## don't really need this, since the default action for discrete is
## to show all of them on the axis
# scale_x_discrete(breaks=avg_int_hourly$hour_mark, labels=avg_int_hourly$hour_mark)
labs(title='Average Intensity Each Hour of the Day')
xlab('Hours of Day')
ylab('Average Intensity')