2012-12-28 3 views
7

레이블에 지수가 포함되도록하려고합니다. 여기 코드는 내가플롯 텍스트에서 표현식 사용 - 이름 대신 변수 값 인쇄

vall = format(cor(x,y)*cor(x,y),digits=3) 
eq <- expression(paste(R^2," = ",vall,sep="")) 
text(legend.x,legend.y,eq,cex=1,font=2) 

해야하지만 텍스트가 단순히 내가 실제에 Vall이 (가 아닌 텍스트 "에 Vall")

+1

중복 되었습니까? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –

+1

나는이 글이 중복되어 있다고 생각하지 않지만이 글의 제목은 약간 오도하는 내용이다. 지수가 실제로 문제가 아닌 것처럼 보이는 문제를 반영하기 위해 제목을 다시 포맷하는 것이 좋습니다. –

+0

'sep = ""'여기서는 아무 것도하지 않습니다 (빈 문자열 추가). 이것은'base :: paste'가 아니라'plotmath'입니다. 여기에 상처를주지는 않으나 비어 있지 않은 문자열이 지정되면 원하는 것을하지 않습니다. –

답변

13

bquote() 시도를 보여 얻는 방법이 enter image description here

모양입니다 예를 들면 다음과 같습니다

set.seed(1) 
vall <- format(rnorm(1),digits=3) 
eq <- bquote(bold(R^2 == .(vall))) 
sq <- seq(0, 1, by = 0.1) 
plot(sq, sq, type = "n") 
text(0.5, 0.5, eq) 

귀하의 예제가 작동하지 않는 이유는 R 결코 vall을 평가 끝나는 없다는 것입니다 :

> eq2 <- expression(paste(R^2," = ",vall,sep="")) 
> eq2 
expression(paste(R^2, " = ", vall, sep = "")) 

plotmath이의 무언가를 만들기 위해 시도하지만 본질적으로 vall 그대로 촬영됩니다.

대개 plotmath 표현식에 paste()이 필요하지 않은 경우 표준 연산자와 레이아웃 연산자를 사용하여 표현식을 작성할 수 있습니다. 예를 들어, 생산 한 귀하의 예제 (평가되지 않은 vall)에 해당 표현을 위해, 당신이 정말로 필요로하는 모든입니다

expression(R^2 == vall) 

bquote()는 식의 값으로 대체 객체가 할 수있는 한 가지 방법입니다. 원하는 개체를 .()의 값으로 바꿉니다. 그런 다음 R은 객체를 찾고 값을 가져 와서 표현식에 삽입합니다.

을 참조하십시오.이 인터페이스를 다른 인터페이스로 대체 할 수도 있습니다.

+0

철저한 설명 +1 –

+0

이것은 작동하지 않습니다. 표현식 (R^2 == vall) – CodeGuy

+0

그러나 bquote는 훌륭하게 작동했습니다. 덕분에 – CodeGuy