Yunan sembolleri ggplot2'de nasıl kullanılır?


102

Kategorilerimin Yunan harfleriyle adlandırılması gerekiyor. Ben kullanıyorum ggplot2ve verilerle çok güzel çalışıyor. Ne yazık ki bu Yunan sembollerini x eksenine (çentik işaretlerine) nasıl yerleştireceğimi ve aynı zamanda efsanede görünmelerini sağlayamıyorum. Bunu yapmanın bir yolu var mı?

GÜNCELLEME: Bağlantıya bir göz attım , ancak yapmak istediğim şeyi başarmak için açıklanmış iyi bir yöntem yok.


4
expressionFonksiyonun tartışmasına buradan bakın: stackoverflow.com/questions/1395105/getting-latex-into-r-plots
DrewConway

viewportsBir ggplot2'den almak için herhangi bir ipucu var mı ? Bu yapılabilirse, x-tic işaretlerini değiştirmenin doğrudan olacağına inanıyorum.
Sam

Yanıtlar:


153

İşte yunan sembollerinin ggplot2'ye nasıl yerleştirileceğini açıklayan mükemmel bir wiki bağlantısı . Özetle, Yunan sembollerini elde etmek için yapmanız gerekenler

  1. Metin Etiketleri: veya parse = Tiçinde kullanın .geom_textannotate
  2. Eksen Etiketleri:expression(alpha) Yunan alfa elde etmek için kullanın .
  3. Faset Etiketleri:labeller = label_parsed İçeride kullanın facet.
  4. Gösterge Etiketleri: Göstergebquote(alpha == .(value)) etiketinde kullanın .

Bu seçeneklerin detaylı kullanımını linkte görebilirsiniz.

DÜZENLE. Onay işaretleri boyunca Yunan sembollerini kullanma amacına şu şekilde ulaşılabilir:

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);

Bunu yaparken mevcut olan çeşitli semboller ve bunların nasıl kullanılacağı hakkında eksiksiz dokümantasyon için bkz ?plotmath.


O Yunan Sembollerinin tikleri işaret etmesini istiyorum. Bu cevabı takip ettiğimden emin değilim. Bunu deneyeceğim ve cevap yazacağım. Yön için teşekkür ederim.
Sam

Bu en azından benim amacım için çalışmıyor. İşaretçi için teşekkürler.
Sam

@Sam, düzenlememdeki örnek koda bakın. Size x ekseni çentik işaretleriniz boyunca Yunan sembolleri verir. Aradığın bu muydu?
Ramnath

8
Yunan harfinden sonra yıldız işareti ('*') eklemek istiyorum. Bunun nasıl yapılacağını bilen var mı?
polarize

1
Geçenlerde başka bir seçeneğin kullanmak olduğunu öğrendim substitute, bu expressionçalışmayan yerlerde de işe yarıyor ve hatta diğer biçimlendirmelere izin veriyor italics, boldvb.
Sam

40

En basit çözüm: Unicode Karakterleri Kullanın

Hayır expressionveya başka paketler gerekli.
Bunun ggplot için daha yeni bir özellik olup olmadığından emin değilim, ama işe yarıyor. Yunanca ve normal metni karıştırmayı da kolaylaştırır (işaretlere "*" eklemek gibi)

Metin dizesi içinde unicode karakterleri kullanmanız yeterlidir. aklıma gelen tüm seçenekler için iyi çalışıyor gibi görünüyor. Düzenleme: daha önce faset etiketlerinde çalışmıyordu. Görünüşe göre bu bir noktada düzeltildi.

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"))

Reprex paketi (v0.3.0) tarafından 2019-08-28 tarihinde oluşturuldu


4
Güzel cevap. Unicode karakterler hakkında daha fazla bilgi için, bakınız: stackoverflow.com/questions/27690729/…
PatrickT

çok esnek!!
joaoal

2
Bu en iyi yoldur, çünkü expressionveya tarafından oluşturulan nesne türleriyle uğraşmazsınız bquote- karakter nesnelerini başka herhangi bir şekilde kullanabileceğiniz bir karakter nesnesi elde edersiniz.
GMSL

1
Bu sadece en kolay Yöntem değil, aynı zamanda en iyisidir, çünkü çoğu durumda işe yarar ve diğer işlevlere dayanmaz.
Squeezie

Bu, yaklaşık yüz satırlık çok sayıda uyarı oluşturur: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

Kullanım expression(delta)küçük harf için 'delta' δve 'Delta' sermayesini almak için Δ.

Yunanca karakterlerin tam listesi:

Α α alfa
Β β p
Γ γ y
Δ δ ö
Ε ε epsilon
Ζ ζ zeta
Η η eta
Θ θ teta
Ι ι yota
Κ κ kappa
Λ λ lambda
Μ μ u
Ν ν nu
Ξ ξ xi
Ο ο OMiCRON
Π π pi
Ρ ρ rho
Σ σ sigma
Τ τ tau
Υ υ upsilon
Φ φ phi
Χ χ chi
Ψ ψ psi
Ω ω omega

DÜZENLEME: Yorumlardan kopyalanır, başka kelimelerle birlikte kullanıldığında aşağıdaki gibi kullanılır:expression(Delta*"price")


1
Nasıl bir etiket alabilirim Δprice? expression(Deltaprice)çalışmıyor, işe yaramıyorexpression(Delta price)
jf328

2
Teşekkürler. Ama bu tam olarak nasıl? xlab(expression(Delta)price)hata veriyor
jf328

3
ifade (Delta * fiyat)
kennyB

Yunan formunu (Latin formunun aksine) Upsilon almanın bir yolu var mı? Bkz. En.wikipedia.org/wiki/Upsilon Latince Y ile Yazışmalar ( en.wikipedia.org/wiki/Upsilon#/media/… ' deki üçüncü karakter gibi bir şey istiyorum )
Adrian

6
ifade (Delta * "fiyat") çalışır. Sözdizimini sevmeyin.
39'da daknowles

16

Yapmak istediğiniz şeyi yapmak için latex2exppakete ihtiyacınız yok. Aşağıdaki kod hile yapacaktı.

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))

görüntü açıklamasını buraya girin

Ayrıca, bazı yorumlar (bu noktadan itibaren cevaplanmamış) bir Yunan harfinden sonra yıldız işareti (*) koyulmasını istedi. expression(alpha~"*")çalışır, bu yüzden denemenizi öneririm.

Edinme hakkında daha fazla yorum soruldu Δ Priceve bunu başarmanın en basit yolunu buluyorum expression(Delta~price)). Yunanca harfinden önce bir şey eklemeniz gerekirse, bunu da yapabilirsiniz: expression(Indicative~Delta~price)bu size:

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.