ggplot2에서 그리스어 기호를 사용하는 방법은 무엇입니까?


101

내 카테고리는 그리스 문자로 이름을 지정해야합니다. 나는을 사용 ggplot2하고 있으며 데이터와 함께 아름답게 작동합니다. 불행히도 나는 그 그리스 기호를 x 축 (눈금 표시)에 배치하고 범례에 표시하는 방법을 알 수 없습니다. 할 방법이 있습니까?

업데이트 : 나는 링크 를 보았지만 내가하고 싶은 것을 성취하기 위해 설명 된 좋은 방법이 없습니다.


4
의 논의를 참조하십시오 expression여기에 기능을 : stackoverflow.com/questions/1395105/getting-latex-into-r-plots
DrewConway

viewportsggplot2에서 를 얻는 것에 대한 힌트가 있습니까? 그렇게 할 수 있다면 x-tic 표시를 변경하는 것이 간단 할 것이라고 믿습니다.
Sam

latex2exp패키지 를 사용할 수 있습니다 : cran.r-project.org/web/packages/latex2exp/vignettes/…
Enrique Pérez Herrero

답변:


152

다음은 ggplot2에 그리스 기호를 넣는 방법을 설명하는 훌륭한 위키에 대한 링크 입니다. 요약하면 그리스 기호를 얻기 위해 수행하는 작업은 다음과 같습니다.

  1. 텍스트 레이블 : 사용 parse = T내부 geom_textannotate.
  2. 축 레이블 :expression(alpha) 그리스어 알파를 얻는 데 사용 합니다.
  3. 패싯 라벨 :labeller = label_parsed 내부 사용 facet.
  4. 범례 레이블 : 범례 레이블bquote(alpha == .(value)) 에서 사용 합니다.

링크에서 이러한 옵션의 자세한 사용법을 볼 수 있습니다.

편집하다. 눈금 표시를 따라 그리스 기호를 사용하는 목적은 다음과 같이 달성 할 수 있습니다.

require(ggplot2);
data(tips);
p0 = qplot(sex, data = tips, geom = 'bar');
p1 = p0 + scale_x_discrete(labels = c('Female' = expression(alpha),
                                      'Male'   = expression(beta)));
print(p1);

이 작업을 수행 할 때 사용할 수있는 다양한 기호 및 사용 방법에 대한 전체 문서는을 참조하십시오 ?plotmath.


나는 그 그리스 기호가 틱을 표시하기를 원합니다. 이 답변을 따르는 지 잘 모르겠습니다. 나는 이것을 시도하고 답장 할 것이다. 방향에 감사드립니다.
Sam

이것은 적어도 내 목적에 맞지 않습니다. 그래도 포인터 주셔서 감사합니다.
Sam

@Sam, 내 편집에서 예제 코드를 확인하십시오. x 축 눈금을 따라 그리스 기호를 제공합니다. 이것이 당신이 찾던 것입니까?
Ramnath 2011 년

8
그리스 문자 뒤에 별표 ( '*')를 추가하고 싶습니다. 누구든지 이것을하는 방법을 알고 있습니까?
편광

1
최근에 또 다른 옵션이를 사용하는 것임을 알게되었습니다 substitute.이 기능은 작동 expression하지 않는 곳에서도 작동하며 italics, bold등과 같은 다른 서식도 허용합니다 .
Sam

40

가장 간단한 솔루션 : 유니 코드 문자 사용

아니 expression또는 다른 패키지가 필요하지 않습니다.
이것이 ggplot의 새로운 기능인지 확실하지 않지만 작동합니다. 또한 그리스어와 일반 텍스트를 쉽게 혼합 할 수 있습니다 (예 : 눈금에 '*'추가).

텍스트 문자열 내에 유니 코드 문자를 사용하십시오. 내가 생각할 수있는 모든 옵션에 대해 잘 작동하는 것 같습니다. 편집 : 이전에는 패싯 레이블에서 작동하지 않았습니다. 이것은 분명히 어느 시점에서 수정되었습니다.

library(ggplot2)
ggplot(mtcars, 
       aes(mpg, disp, color=factor(gear))) + 
  geom_point() + 
  labs(title="Title (\u03b1 \u03a9)", # works fine
       x= "\u03b1 \u03a9 x-axis title",    # works fine
       y= "\u03b1 \u03a9 y-axis title",    # works fine
       color="\u03b1 \u03a9 Groups:") +  # works fine
  scale_x_continuous(breaks = seq(10, 35, 5), 
                     labels = paste0(seq(10, 35, 5), "\u03a9*")) + # works fine; to label the ticks
  ggrepel::geom_text_repel(aes(label = paste(rownames(mtcars), "\u03a9*")), size =3) + # works fine 
  facet_grid(~paste0(gear, " Gears \u03a9"))

2019-08-28에 reprex 패키지 (v0.3.0)로 생성됨


4
좋은 대답입니다. 유니 코드 문자에 대한 자세한 내용은 다음을 참조하십시오. stackoverflow.com/questions/27690729/…
PatrickT

매우 유연합니다 !!
joaoal

2
이것은 expression또는에 의해 형성된 오브젝트 유형에 대해 신경 쓰지 않기 때문에 가장 좋은 방법 bquote입니다. 캐릭터 오브젝트를 사용하는 다른 방법으로 사용할 수있는 캐릭터 오브젝트로 끝납니다.
GMSL

1
이것은 대부분의 경우에 작동하고 다른 기능에 의존하지 않기 때문에 가장 쉬운 방법 일뿐만 아니라 최고이기도합니다.
Squeezie

이것은 약 100 줄의 많은 경고를 생성합니다.Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : “conversion failure on '>3σ' in 'mbcsToSbcs': dot substituted for <cf>
Patafikss

37

expression(delta)소문자에 'delta'를 사용 δ하고 대문자를 얻으려면 'Delta'를 사용하십시오 Δ.

그리스 문자의 전체 목록은 다음과 같습니다.

α α 알파
Β β 베타
Γ γ 감마
Δ δ 델타
Ε ε 엡실론
Ζ ζ 제타
Η η eta
Θ θ theta
Ι ι iota
Κ κ 카파
Λ λ 람다
Μ μ mu
Ν ν nu
Ξ ξ xi
Ο ο omicron
Π π pi
Ρ ρ rho
Σ σ sigma
Τ τ tau
Υ υ 입실론
Φ φ phi
Χ χ chi
Ψ ψ psi
Ω ω omega

편집 : 다른 단어와 함께 사용할 때 주석에서 복사되었습니다.expression(Delta*"price")


1
다음과 같은 레이블을 어떻게 얻을 수 Δprice있습니까? expression(Deltaprice)하지 작업을 수행하지 아니하며 않습니다expression(Delta price)
jf328

2
감사. 하지만 그게 정확히 어때? xlab(expression(Delta)price)오류를 제공합니다
jf328

3
expression (Delta * price)
kennyB

그리스 형식 (라틴 형식이 아닌) Upsilon을 얻을 수있는 방법이 있습니까? 참조 en.wikipedia.org/wiki/Upsilon 라틴어 Y에 대응 (I가에서 세 번째 문자 같은 싶습니다 en.wikipedia.org/wiki/Upsilon#/media/...를 )
아드리안

6
expression (Delta * "price")이 작동합니다. 구문을 좋아하지 마십시오.
daknowles aug

16

원하는 작업 latex2exp을 수행하기 위해 패키지가 필요하지 않습니다 . 다음 코드가 트릭을 수행합니다.

ggplot(smr, aes(Fuel.Rate, Eng.Speed.Ave., color=Eng.Speed.Max.)) + 
  geom_point() + 
  labs(title=expression("Fuel Efficiency"~(alpha*Omega)), 
color=expression(alpha*Omega), x=expression(Delta~price))

여기에 이미지 설명 입력

또한 그리스 문자 뒤에 별표 (*)를 넣는 것에 대해 (이 시점에서 답변되지 않은) 의견이 일부있었습니다. expression(alpha~"*")작동하므로 시도해 보는 것이 좋습니다.

얻는 것에 대해 더 많은 의견을 물었고 Δ Price이를 달성하는 가장 간단한 방법은 expression(Delta~price)). 그리스 문자 앞에 무언가를 추가해야하는 경우 다음과 같이 할 수도 expression(Indicative~Delta~price)있습니다.

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.