[解決済み] ggplot軸ラベルの下付き文字
質問
軸ラベルに添え字をつける方法を考えています。
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1]))
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1d]))
最初の例は単なる数字なのでうまくいきますが、角括弧の中に文字があるとすぐに失敗します。Blah[subscript(1d)] は本質的に必要なものですが、subscript に文字を持たせる方法がわかりません。次のようなバリエーションを試してみました。
paste()
.
次の例では、奇妙な動作が見られます。
labs(y=expression(Blah[12])) # this works
labs(y=expression(Blah[d])) # this works
labs(y=expression(Blah[d1])) # this works
labs(y=expression(Blah[1d])) # this fails
感想は?
どのように解決するのですか?
最後のものが失敗する理由は、引数が
expression
の引数が R パーサーに渡され、それらが正しい R 構文であるかどうかのテストに失敗するとエラーが返されるからです。文字列またはトークン
1d
は有効な R トークン(またはシンボル) ではありません。これを有効なRトークンに分割して、空白以外の演算子で"connect"するか、バックチックするか、通常の引用符を使用するかのいずれかが可能でしょう。私は、どちらかが
paste
:
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1*d]))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah["1d"]))
Rのトークン(またはquot;names"やquot;symbols")は数字から始まることは想定されていません。そのため、この制限を回避するために、引用符で囲むか、あるいは
1
と
d
をスペース以外のセパレータで区切った場合
*
演算子を使用します。これは、純粋な数値リテラルを合法的な R 記号またはトークンで結合または合体します。
添え字なしのパーセント記号を取得するには、単に。
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1*d]*"%"))
pct-signの周りにparensを置くこと。
expression(Blah[1*d]*"(%)")
は
%
文字は、ユーザー定義の infix 演算子の開始を意味するため、R のパースにおいて特別な意味を持ちます。そのため、これをリテラルとして使用するには、引用符で囲む必要があります。同じ理由で、"for" と "in" は R の予約語グループに入っているので、引用される必要があります。
for
と
in
は、私が最も頻繁につまずくものです)。タイプです。
?Reserved
そして、もう一つのトリックは、quot;trick" 内の数字を引用符で囲むことです。
italic()
の中の数字を引用符で囲むことです。引用符で囲まれていない数字は、この関数の中では斜体にはなりません。
警告
paste
はplotmathの関数
を除いて
とは異なるセマンティクスを持っています。
base::paste function
. 特に、これは 'sep' 引数を持ちません。ですから、印字された引数の間にスペースを入れることは決してできず、 スペースを入れない項目を入れようとすると、他のすべての引数の後に 一つのインスタンスが表示され、ラベルは
sep=" "
.
paste0
はplotmath関数ではないので、解釈されず、括弧の中に未処理の引数と共に "未処理"として表示されます。
関連
-
8.2 カマグラ(No.31〜No.40)
-
ggplot2 からグリッドと背景色を削除する。
-
R言語における共通関数
-
[解決済み] Rで複数行のコメントを持つことは可能ですか?[重複している]。
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み] ggplotで凡例のタイトルを変更する方法
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み】ggplot2で軸のタイトルやラベルの大きさを変更する。
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン