Colleagues,
date<-c("12-29","12-30","01-01")
PT <- c(.106,.130,.121)
data <- data.frame(date,PT)
ggplot(data, aes(x=date,y=PT,group=1))+
geom_point(size=4)+
geom_line()+
geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+
annotate("text", x=2.5, y=.1, label="Very
Good",size=5,fontface="bold")+
annotate("text", x=2.5, y=.225,
label="Good",size=5,fontface="bold")+
annotate("text", x=2.5, y=.28,
label="Marginal",size=5,fontface="bold") +
annotate("text", x=2.5, y=.45,
label="Inadequate",size=6,fontface="bold")+
annotate("text", x=2.5, y=.8,
label="OOC",size=6,fontface="bold")+
annotate("text", x=2.5, y=-.05, label="PT Not
Done",size=5,fontface="bold")+
theme_cowplot()
The plot has the wrong date order.
What is desired is 12-29, 12-30 and 01-01.
Some feedback would be appreciated.
All the best,
Thomas Subia
"De quoi devenir chevre? Des donnees"
I converted `date` to a factor and it seemed to work:
```
library(ggplot2)
library(cowplot)
date <- c("12-29","12-30","01-01")
date <- factor(date, labels = unique(date))
PT <- c(.106,.130,.121)
data <- data.frame(date,PT)
ggplot(data, aes(x=date,y=PT,group=1))+
geom_point(size=4)+
geom_line()+
geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+
annotate("text", x=2.5, y=.1, label="Very
Good",size=5,fontface="bold")+
annotate("text", x=2.5, y=.225,
label="Good",size=5,fontface="bold")+
annotate("text", x=2.5, y=.28,
label="Marginal",size=5,fontface="bold") +
annotate("text", x=2.5, y=.45,
label="Inadequate",size=6,fontface="bold")+
annotate("text", x=2.5, y=.8,
label="OOC",size=6,fontface="bold")+
annotate("text", x=2.5, y=-.05, label="PT Not
Done",size=5,fontface="bold")+
theme_cowplot()
```
On Wed, Jan 4, 2023 at 4:09 PM Thomas Subia
<thomas.subia at fmindustries.com> wrote:>
> Colleagues,
>
> date<-c("12-29","12-30","01-01")
> PT <- c(.106,.130,.121)
> data <- data.frame(date,PT)
> ggplot(data, aes(x=date,y=PT,group=1))+
> geom_point(size=4)+
> geom_line()+
> geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+
>
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+
> annotate("text", x=2.5, y=.1, label="Very
Good",size=5,fontface="bold")+
> annotate("text", x=2.5, y=.225,
label="Good",size=5,fontface="bold")+
> annotate("text", x=2.5, y=.28,
label="Marginal",size=5,fontface="bold") +
> annotate("text", x=2.5, y=.45,
label="Inadequate",size=6,fontface="bold")+
> annotate("text", x=2.5, y=.8,
label="OOC",size=6,fontface="bold")+
> annotate("text", x=2.5, y=-.05, label="PT Not
Done",size=5,fontface="bold")+
> theme_cowplot()
>
> The plot has the wrong date order.
> What is desired is 12-29, 12-30 and 01-01.
>
> Some feedback would be appreciated.
>
> All the best,
> Thomas Subia
>
> "De quoi devenir chevre? Des donnees"
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
1) Your "dates" are not being processed as dates. They are strings.
2) As written your date "01-01" comes first because year is not
specified and January comes before December.
3) A library statement is missing. I tried running the program and
theme_cowplot() was not found.
As you are plotting strings, you could put a space character in front of the
December dates so that they are first.
date<-c(" 12-29"," 12-30","01-01")
That fixes the problem in this example. You can order all the dates by putting
more spaces in front of earlier years. That will get messy.
Tim
-----Original Message-----
From: R-help <r-help-bounces at r-project.org> On Behalf Of Thomas Subia
Sent: Wednesday, January 4, 2023 4:08 PM
To: r-help at r-project.org
Subject: [R] Date order question
[External Email]
Colleagues,
date<-c("12-29","12-30","01-01")
PT <- c(.106,.130,.121)
data <- data.frame(date,PT)
ggplot(data, aes(x=date,y=PT,group=1))+
geom_point(size=4)+
geom_line()+
geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+
annotate("text", x=2.5, y=.1, label="Very
Good",size=5,fontface="bold")+
annotate("text", x=2.5, y=.225,
label="Good",size=5,fontface="bold")+
annotate("text", x=2.5, y=.28,
label="Marginal",size=5,fontface="bold") +
annotate("text", x=2.5, y=.45,
label="Inadequate",size=6,fontface="bold")+
annotate("text", x=2.5, y=.8,
label="OOC",size=6,fontface="bold")+
annotate("text", x=2.5, y=-.05, label="PT Not
Done",size=5,fontface="bold")+
theme_cowplot()
The plot has the wrong date order.
What is desired is 12-29, 12-30 and 01-01.
Some feedback would be appreciated.
All the best,
Thomas Subia
"De quoi devenir chevre? Des donnees"
______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=05%7C01%7Ctebert%40ufl.edu%7C9f58ce4e64d04d2b3f0908daee97dcb5%7C0d4da0f84a314d76ace60a62331e1b84%7C0%7C0%7C638084633565926697%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=y7Co7Ae8RJG4AWxjwLLNcvopfUt7fGRBguUovhYaxl8%3D&reserved=0
PLEASE do read the posting guide
https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.r-project.org%2Fposting-guide.html&data=05%7C01%7Ctebert%40ufl.edu%7C9f58ce4e64d04d2b3f0908daee97dcb5%7C0d4da0f84a314d76ace60a62331e1b84%7C0%7C0%7C638084633565926697%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=pTYhbgrmoAu6g3%2FDepzJJt45Euazik4D6UJKByOZKuQ%3D&reserved=0
and provide commented, minimal, self-contained, reproducible code.
?s 21:08 de 04/01/2023, Thomas Subia escreveu:> Colleagues, > > date<-c("12-29","12-30","01-01") > PT <- c(.106,.130,.121) > data <- data.frame(date,PT) > ggplot(data, aes(x=date,y=PT,group=1))+ > geom_point(size=4)+ > geom_line()+ > geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+ > scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+ > annotate("text", x=2.5, y=.1, label="Very Good",size=5,fontface="bold")+ > annotate("text", x=2.5, y=.225, label="Good",size=5,fontface="bold")+ > annotate("text", x=2.5, y=.28, label="Marginal",size=5,fontface="bold") + > annotate("text", x=2.5, y=.45, label="Inadequate",size=6,fontface="bold")+ > annotate("text", x=2.5, y=.8, label="OOC",size=6,fontface="bold")+ > annotate("text", x=2.5, y=-.05, label="PT Not Done",size=5,fontface="bold")+ > theme_cowplot() > > The plot has the wrong date order. > What is desired is 12-29, 12-30 and 01-01. > > Some feedback would be appreciated. > > All the best, > Thomas Subia > > "De quoi devenir chevre? Des donnees" > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.Hello, Transform `date` into a real date column in a dplyr pipe so that the original data remains unchanged and plot with scale_x_date which will allow for control over the axis breaks and labels. The only problem are now the text annotations. The x coordinate is numeric and it must also be a date object. Below I solve this by creating a annotations data set ann_data. In geom_text the data argument is now another one, but one layer only annotates all areas. library(ggplot2) library(cowplot) library(dplyr) date<-c("12-29","12-30","01-01") PT <- c(.106,.130,.121) data <- data.frame(date,PT) ann_data <- data.frame( y = c(0.1, 0.225, 0.28, 0.45, 0.8, -0.05), text = c("Very Good", "Good", "Marginal", "Inadequate", "OOC", "PT Not Done") ) ann_data$x <- as.Date("2022-12-31") data %>% mutate(newyear = ifelse(substr(date, 1, 2) > "01", "2022-", "2023-"), date = as.Date(paste0(newyear, date))) %>% ggplot(aes(x = date, y = PT)) + geom_point(size = 4) + geom_line() + geom_hline(yintercept = c(1,.60,0,.30,.25,.2)) + # geom_text( data = ann_data, mapping = aes(x = x, y = y, label = text), size = 5, fontface = "bold" ) + scale_x_date(date_breaks = "1 day", date_labels = "%m-%d") + # scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.2))+ theme_cowplot() Hope this helps, Rui Barradas
Hallo Thomas
Similar as suggested by Rui, you shall change your date to real date e.g. by
library(lubridate)
date <- paste(date, c(rep(2022,2), 2023), sep="-")
date <- mdy(date)
and you need to change also x coordinate in annotate.
ggplot(data, aes(x=date,y=PT,group=1))+
geom_point(size=4)+
geom_line()+
geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.
2))+
annotate("text", x=date[2], y=.1, label="Very
Good",size=5,fontface="bold")+
annotate("text", x=date[2], y=.225,
label="Good",size=5,fontface="bold")+
annotate("text", x=date[2], y=.28,
label="Marginal",size=5,fontface="bold") +
annotate("text", x=date[2], y=.45,
label="Inadequate",size=6,fontface="bold")+
annotate("text", x=date[2], y=.8,
label="OOC",size=6,fontface="bold")+
annotate("text", x=date[2], y=-.05, label="PT Not
Done",size=5,fontface="bold")
Cheers
Petr
> -----Original Message-----
> From: R-help <r-help-bounces at r-project.org> On Behalf Of Thomas
Subia
> Sent: Wednesday, January 4, 2023 10:08 PM
> To: r-help at r-project.org
> Subject: [R] Date order question
>
> Colleagues,
>
> date<-c("12-29","12-30","01-01")
> PT <- c(.106,.130,.121)
> data <- data.frame(date,PT)
> ggplot(data, aes(x=date,y=PT,group=1))+
> geom_point(size=4)+
> geom_line()+
> geom_hline(yintercept =c(1,.60,0,.30,.25,.2))+
>
>
scale_y_continuous(label=scales::label_percent(),breaks=c(1,0.6,0,.3,0.25,0.
2))> +
> annotate("text", x=2.5, y=.1, label="Very
Good",size=5,fontface="bold")+
> annotate("text", x=2.5, y=.225,
label="Good",size=5,fontface="bold")+
> annotate("text", x=2.5, y=.28,
label="Marginal",size=5,fontface="bold")
+> annotate("text", x=2.5, y=.45,
label="Inadequate",size=6,fontface="bold")+> annotate("text", x=2.5, y=.8,
label="OOC",size=6,fontface="bold")+
> annotate("text", x=2.5, y=-.05, label="PT Not
Done",size=5,fontface="bold")+> theme_cowplot()
>
> The plot has the wrong date order.
> What is desired is 12-29, 12-30 and 01-01.
>
> Some feedback would be appreciated.
>
> All the best,
> Thomas Subia
>
> "De quoi devenir chevre? Des donnees"
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.