ggplot2でギリシャ語の記号を使用する方法


101

カテゴリにはギリシャ文字で名前を付ける必要があります。私はを使用ggplot2しており、データを問題なく処理します。残念ながら、これらのギリシャ記号をx軸(目盛り)に配置し、凡例に表示する方法もわかりません。それを行う方法はありますか?

更新:私はリンクを見ましたが、私がやりたいことを達成するために説明された良い方法はありません。


4
expression関数の説明については、こちらをご覧ください:stackoverflow.com/questions/1395105/getting-latex-into-r-plots
DrewConway 2011年

viewportsggplot2からを取得するためのヒントはありますか?それができれば、x-ticマークの変更は簡単だと思います。
Sam

あなたは使用することができますlatex2exp:パッケージcran.r-project.org/web/packages/latex2exp/vignettes/...
エンリケ・ペレス・エレーロ

回答:


152

ここにggplot2にギリシャのシンボルを置く方法を説明する優れたwikiへのリンクがあります。要約すると、ギリシャのシンボルを取得するには、次のようにします

  1. テキストラベル:parse = T内部geom_textまたはを使用しannotateます。
  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

@サム、私の編集でサンプルコードをチェックしてください。x軸の目盛りに沿ってギリシャ記号を表示します。これはあなたが探していたものですか?
Ramnath

8
ギリシャ文字の後にアスタリスク( '*')を追加したいと思います。誰でもこれを行う方法を知っていますか?
偏光

1
私は最近、別のオプションが使用することを学んだsubstitute、これはまた場所で働くexpression仕事をしない、とさえのような他の書式設定を可能にするitalicsboldなど
サム・

40

最も簡単な解決策:Unicode文字を使用する

いいえexpressionまたは他のパッケージは必要ありません。
これがggplotの新しい機能かどうかはわかりませんが、機能します。また、ギリシャ語と通常のテキストを簡単に組み合わせることができます(ティックに「*」を追加するなど)。

テキスト文字列内でUnicode文字を使用するだけです。私が考えることができるすべてのオプションでうまく機能するようです。 編集:以前はファセットラベルでは機能しませんでした。これは明らかにある時点で修正されました。

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パッケージ(v0.3.0)によって2019-08-28に作成されました


4
素敵な答え。Unicode文字の詳細については、stackoverflow.com
questions / 27690729 /…を

非常に柔軟です!!
joaoal

2
expressionまたはによって形成されたオブジェクトタイプにこだわらないため、これが最良の方法bquoteです。最終的には、他の方法でキャラクターオブジェクトを使用できるキャラクターオブジェクトができあがります。
GMSL

1
ほとんどの場合に機能し、他の機能に依存しないため、これは最も簡単な方法であるだけでなく、最高の方法でもあります。
スクイージー

これにより多くの警告が生成されます。約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

36

expression(delta)小文字の場合は「デルタ」を使用し、大文字δを取得するには「デルタ」を使用しΔます

ここにギリシャ文字の完全なリストがあります:

Ααアルファ
Ββベータ
Γγガンマ
Δδデルタ
Εεイプシロン
Ζζゼータ
Ηηイータ
Θθシータ
Ιιイオタ
Κκカッパ
Λλラムダ
Μμミュー
ΝνNU
ΞξXI
Οοオミクロン
Ππパイ
Ρρロー
σσシグマ
ττタウ
Υυウプシロン
φφファイ
χχカイ
ψψPSI
ωωオメガ

編集:他の単語と組み合わせて使用​​する場合、コメントからコピーされます:expression(Delta*"price")


1
次のようなラベルを取得するにはどうすればよいΔpriceですか?expression(Deltaprice)機能しません、機能しませんexpression(Delta price)
jf328 '29

2
ありがとう。しかし、それは正確にはどうですか?xlab(expression(Delta)price)エラーが発生します
jf328 2017年

3
expression(Delta * price)
kennyB 2017

(ラテン語形式ではなく)ギリシャ語形式のウプシロンを入手する方法はありますか?en.wikipedia.org/wiki/Upsilon Correspondence with Latin Yを参照してください(en.wikipedia.org/wiki/Upsilon#/media/…の3番目の文字のようなものを希望します
Adrian

6
expression(Delta * "price")は機能します。構文は好きではありません。
daknowles 2017

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.