[解決済み] ggplot を使ってプロットするとき、hjust と vjust は何をするのですか?
2022-04-20 16:57:33
質問
ggplot を使ってプロットを作成するたびに、hjust と vjust の値を変えて、次のような行で少し時間をかけて試しています。
+ opts(axis.text.x = theme_text(hjust = 0.5))
で、軸ラベルが軸にほぼ接触し、軸と同じ高さになるように並べる(いわば軸にジャストフィットする)。ところが、よくわからないんです。よくあることです。
hjust = 0.5
とは劇的に異なる結果をもたらします。
hjust = 0.6
例えば、いろいろな値で遊んでみたけど、よくわからなかったんだ。
hjust と vjust オプションがどのように機能するかについて、包括的な説明をどなたか教えていただけませんか?
どのように解決するのですか?
の値は
hjust
と
vjust
は0から1までしか定義されない。
- 0は左寄せを意味する
- 1は右寄せを意味する
出典: ggplot2, Hadley Wickham, page 196
(そう、ほとんどの場合、この範囲を超えても使えることは知っていますが、特定の動作を期待しないでください。 これは仕様外です)
hjust
は水平方向の両端揃えを制御し
vjust
は垂直方向の両端揃えを制御します。
例を見れば一目瞭然です。
td <- expand.grid(
hjust=c(0, 0.5, 1),
vjust=c(0, 0.5, 1),
angle=c(0, 45, 90),
text="text"
)
ggplot(td, aes(x=hjust, y=vjust)) +
geom_point() +
geom_text(aes(label=text, angle=angle, hjust=hjust, vjust=vjust)) +
facet_grid(~angle) +
scale_x_continuous(breaks=c(0, 0.5, 1), expand=c(0, 0.2)) +
scale_y_continuous(breaks=c(0, 0.5, 1), expand=c(0, 0.2))
<イグ
を変更するとどうなるかを理解するために
hjust
の軸テキストの水平方向の配置は、x 軸に対してではなく、プロット全体に対して定義されていることを理解する必要があります (ここで、y 軸のテキストも含まれます)。 (これは残念なことだと私は思います。 軸に相対的なアライメントを持つ方がずっと便利です)。
DF <- data.frame(x=LETTERS[1:3],y=1:3)
p <- ggplot(DF, aes(x,y)) + geom_point() +
ylab("Very long label for y") +
theme(axis.title.y=element_text(angle=0))
p1 <- p + theme(axis.title.x=element_text(hjust=0)) + xlab("X-axis at hjust=0")
p2 <- p + theme(axis.title.x=element_text(hjust=0.5)) + xlab("X-axis at hjust=0.5")
p3 <- p + theme(axis.title.x=element_text(hjust=1)) + xlab("X-axis at hjust=1")
library(ggExtra)
align.plots(p1, p2, p3)
<イグ
でどうなるかを調べるには
vjust
軸ラベルの整列。
DF <- data.frame(x=c("a\na","b","cdefghijk","l"),y=1:4)
p <- ggplot(DF, aes(x,y)) + geom_point()
p1 <- p + theme(axis.text.x=element_text(vjust=0, colour="red")) +
xlab("X-axis labels aligned with vjust=0")
p2 <- p + theme(axis.text.x=element_text(vjust=0.5, colour="red")) +
xlab("X-axis labels aligned with vjust=0.5")
p3 <- p + theme(axis.text.x=element_text(vjust=1, colour="red")) +
xlab("X-axis labels aligned with vjust=1")
library(ggExtra)
align.plots(p1, p2, p3)
<イグ
関連
-
[解決済み] matplotlib でプロットをクリアするために cla()、clf() または close() をいつ使うか?
-
Rでエラー:単項演算子への引数が無効
-
Rのexpand.grid()コマンド
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] Rの代入演算子"="と"<-"の違いは何ですか?
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
8.2 カマグラ(No.31〜No.40)
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
データボックス内の行/列の削除/追加を行うR言語
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
DEG解析で'row.names'に重複した名前を付けられない場合の解決法
-
[解決済み] Rの%*%の意味 [重複]について
-
[解決済み] 特定のサイズのプロットウィンドウを作成する
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] Rで文字列から最後のn文字を抽出する