Reputation: 191
With the help of Axeman I have been able to plot one datum with mean/median hlines. To complete the annotation I want to put the mean/median values into the legend labels. My code:
require(data.table)
require(ggplot2)
wf <- data.table::fread('Date Gals Days GpD GpM
2016-10-21 6.0 1 6.0 186.0
2016-10-22 6.0 1 6.0 186.0
2016-10-23 12.4 1 12.4 384.4
2016-10-24 26.8 1 26.8 830.8
2016-10-25 33.3 1 33.3 1032.3
2016-10-26 28.3 1 28.3 877.3')
nmu <- mean(wf$Gals)
textmu <- paste("Mean:", round(nmu, 2))
nmed <- median(wf$Gals)
textmed <- paste("Median:", round(nmed, 2))
p <- ggplot(wf, aes(Date, Gals)) +
geom_line(aes(lty = "Gals", color = "Gals", group = 1)) +
geom_hline(aes(yintercept = nmu, linetype = textmu, color = textmu),
color='red',size=1)+
geom_hline(aes(yintercept = nmed, linetype = textmed, color = textmed),
color='orange',size=1)+
#scale_linetype('Water Usage') +
scale_color_manual('Water Usage',
values=c('Gals'='black',textmu='red', textmed='orange')) +
xlab("") +
ylab("Gallons per Day")
print(p)
How do I correct this?
Upvotes: 4
Views: 101
Reputation: 35307
Prepare a vector of labels, then use the code that I gave in my previous answer:
labels <- c(Gals = 'Gals',
Mean = paste("Mean:", round(mean(wf$Gals), 2)),
Median = paste("Median:", round(median(wf$Gals), 2)))
ggplot(wf, aes(Date, Gals)) +
geom_line(aes(lty = "Gals", color = "Gals", group = 1)) +
geom_hline(aes(yintercept = mean(wf$Gals), linetype = "Mean", color = "Mean"), size=1) +
geom_hline(aes(yintercept = median(wf$Gals), linetype = "Median", color = "Median"), size = 1) +
scale_linetype('Water Usage', labels = labels) +
scale_color_manual(
'Water Usage',
values = c('Gals' = 'black', 'Mean' = 'red', 'Median' = 'orange'),
labels = labels
) +
xlab("") + ylab("Gallons per Day")
Upvotes: 1
Reputation: 2070
by melting your data.table
you can:
require(data.table)
require(ggplot2)
wf <- data.table::fread('Date Gals Days GpD GpM
2016-10-21 6.0 1 6.0 186.0
2016-10-22 6.0 1 6.0 186.0
2016-10-23 12.4 1 12.4 384.4
2016-10-24 26.8 1 26.8 830.8
2016-10-25 33.3 1 33.3 1032.3
2016-10-26 28.3 1 28.3 877.3')
wf[,`:=`(Mean=round(mean(Gals),2),Median=round(median(Gals),2))]
p <- ggplot(melt(wf,id.vars = c(1,3))
[variable%in%c("Gals","Mean","Median")], aes(Date,
value,color=variable,group=variable)) +
geom_line() +
scale_color_manual('Water Usage',values=c('Gals'='black',Mean='red',
Median='orange')) +
xlab("") +
ylab("Gallons per Day")
print(p)
Upvotes: 0