[R] Convert string for expression in plot

Uwe Ligges ligges at statistik.tu-dortmund.de
Tue Jan 29 21:46:56 CET 2008



Richard Longland wrote:
> Thanks for the help. This substitute command might be what I'm after,
> but, the whole string is being read in from a file. So I can't
> explicitly write the thing out as you did in your example, as with your
> example in R-news.
> 
> My rules are:
> Convert any ",g" or "g," to ",gamma" or "gamma,"
>   (This comma search avoids converting the Mg to Mgamma!)
> Make ANY number a superscript.
> 
> Currently, this is what I do:
> 
> # Read in the reaction name, not very elegant I know
> ReacName <-
> as.character(read.table("file.dat",skip=0,header=FALSE,nrows=1)$V1)
> print(ReacName)
> 
> # convert and numbers and g
> ReacName <- sub(",g",",gamma",ReacName)
> ReacName <- sub("g,","gamma,",ReacName)
> ReacName <- gsub("([1-9])","phantom()^\\1",ReacName)

replace the last line by

ReacName <- gsub("([[:digit:]]+)", "phantom()^{\\1}*", ReacName)

and later perhaps something ugly like

plot(1:10, main=parse(text=ReacName)))

Uwe Ligges


> print(ReacName)
> 
> 
> This results in:
> 25Mg(p,g) 
> phantom()^2phantom()^5Mg(p,gamma) 
> 
> Just to clarify quickly, The text will always be different. The Mg could
> be Al, S etc. The p could be different also. So the whole name has to be
> automated into the plot title.
> 
> I imagine it's possible to split this string into pieces... but there
> must be a better and easier way to do this.
> 
> Thanks again for the help,
> Richard
> 
> 
> 
> 
> 
> On Tue, 2008-01-29 at 18:54 +0100, Uwe Ligges wrote:
>> Richard Longland wrote:
>>> Hi,
>>>
>>> Although I understand how to use expression and paste to add
>>> superscripts and symbols to my graphs, I have a problem with adding
>>> superscripts to an existing string.
>>>
>>> For example, I read in the following from a separate file:
>>> 25Mg(p,g)
>>>
>>> I want to convert that to superscripts etc. (in LaTex format):
>>> $^{25}$Mg(p,$\gamma$)
>>>
>>> This needs to then be put into a graph title.
>>>
>>> Any ideas? I know that I can just write it in using expression and
>>> paste, but the title is read in from a separate file.
>>
>> If you explain what the rules are to use superscript or greek letters 
>> (why is the p not converted to pi but the g to gamma, etc?), we ca help,
>> as an example if you read just the number from a file:
>>
>> #number <- scan(that_file)
>> # say you read
>> number <- 25
>>
>> plot(1:10, main=substitute(phantom()^number * Mg(p, gamma), 
>> list(number=number)))
>>
>> See ?plotmath and for automating things like this my article in R News 
>> might help:
>> Ligges, U. (2002): R Help Desk: Automation of Mathematical Annotation in 
>> Plots. R News 2 (3), 32-34.
>>
>> Best,
>> Uwe Ligges
>>
>>
>>
>>
>>> Cheers for the help,
>>> Richard longland
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> 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.
>>
>



More information about the R-help mailing list