14

I wish to substitute the following (yes, I've written it here in TeX format, just to be clear)
$P_{M1}(\tilde{z}>z) - P_{M0}(\tilde{z}>z)$
for the green line's legend entry (cptsdtbehavioralm), and
$P_{M2}(\tilde{z}>z) - P_{M0}(\tilde{z}>z)$
for the blue line's legend entry (fullbehavioralmodel).

Here is the code with which I generated the plot (I am omitting the 10,000-observation dataset and the transforms to generate the functions Fm0, Fm1 and Fm2):

bmp("bias_plot_v4.bmp", width=540, pointsize=10)
ggplot(data.frame(x=c(0,80)),aes(x) ) +
   stat_function(fun=function(x)((1-Fm1(x)) - (1- Fm0(x))), geom="line", 
aes(colour="cptsdtbehavioralm"), n=1000) +
   stat_function(fun=function(x)((1-Fm2(x)) - (1- Fm0(x))), geom="line", 
aes(colour="fullbehavioralmodel"), n=1000) +
 theme_bw() +
   ylab("Probability") +
 xlab(expression(paste("Security breaches per 3-week spear-phishing campaign ", 
italic( (z) )))) +  
 theme(aspect.ratio=.618) + 
   theme(legend.position=c(0.845,0.8)) +
   theme(legend.key = element_blank()) +
   scale_color_manual(values = c("cptsdtbehavioralm"="green2", 
"fullbehavioralmodel" = "blue"), name="Bias")
dev.off()

Whenever I try to replace the "cptsdtbehavioralm" and "fullbehavioralmodel" with a math expression -- e.g. to keep it simple, expression(P[{M1}]) -- I get the following type of errors:

Error: unexpected '=' in:
"       theme(legend.key = element_blank()) +
   scale_color_manual(values = c(expression(P[{M1}]))="

I'm at my wit's end -- any insight or suggestions would be very, very welcome.

1
  • 1
    This example is highly unreproducible. Create a small example, and the code that will return the error. At the moment it appears you have mistyped your equation, (closing a parenthesis prematurely), but that is purely guesswork.... Commented Oct 22, 2013 at 2:10

1 Answer 1

35

Here is a simple example of how to use values and labels to get what I think you want.

Note that values map the values in the data to the colours you wish to use, while labels are the labels you want displayed (so this is where you would put the expression).

ggplot(data = data.frame(x= c(0,5)),aes(x=x)) +
    stat_function(fun=dnorm,aes(colour = 'red')) + 
    stat_function(fun = dexp, aes(colour = 'blue')) + 
    scale_colour_manual(values = c('red' = 'red','blue' = 'blue'),name = '', 
          labels = expression(P[M1](tilde(z)>0),P[M0](tilde(z)>0)))

enter image description here

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you very much mnel -- you did see through my less-than-fully-transparent question. I had cobbled the code together from numerous other examples and posts here and elsewhere. Thanks to you, my code now not only works, but it is cleaner and clearer! I'd vote you up, but my experience is too low at the moment (this was my first post).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.