Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
847 views
in Technique[技术] by (71.8m points)

r - Using plotmath in ggplot2 with percent sign (%)

I would like to use Greek characters, Latin characters and the percent sign in the facet labels of a ggplot2 bar chart. Greek characters can be done with 'facet_grid(.~variable, labeller=label_parsed)':

    a<-c("Delta~V","VarcoV","Delta~V","VarcoV")
    b<-c(1,2,3,4)
    d<-c("one","one","two","two")
    mydata<-data.frame(cbind(b,a,d))
    ggplot(mydata,aes(x=d,y=b))+facet_grid(.~a, labeller=label_parsed)+geom_bar(stat="identity")

Now I also want to add a facet label that includes % and a Latin character:

    a<-c("Delta~V","VarcoV","%V","Delta~V","VarcoV","%V")
    b<-c(1,2,3,4,5,6)
    d<-c("one","one","one","two","two","two")
    mydata<-data.frame(cbind(b,a,d))
    ggplot(mydata,aes(x=d,y=b))+facet_grid(.~a, labeller= label_parsed)+geom_bar(stat="identity")

This produces the following error:

    Error in parse(text = x) : <text>:1:1: unexpected input
    1: %V
       ^

Any ideas how to include the percent sign?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Latin characters do not need any special treatment and you can see this in the first element of a. Try this:

a<-c("Delta~V","VarcoV","'%'*V","Delta~V","VarcoV","'%'*V")

The "%" sign is special so you need to quote it. You could have just done '%V' but I threw in the "*" (asterisk) to show how to separate plotmath tokens with no displayed space. (You already appear to know how to separate tokens with the spacing-separator, "~".)

The key lesson is to mix type of quotes. The first quote type will signal which type is used to terminate the character token/string. You can also use the escape character: "". This also succeeds:

a<-c("Delta~V","VarcoV",""%"*V","Delta~V","VarcoV",""%"*V")

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...