ggplot2のAxesテキストのフォントサイズと方向の変更


188

x軸にカテゴリ変数、y軸に数値変数を使用してグラフをプロットしています。

x軸の場合、データポイントが多数あるとすると、デフォルトのテキスト形式では、各目盛りのラベルが他のラベルと重なってしまいます。(a)軸テキストのフォントサイズを変更し、(b)テキストが軸に垂直になるようにテキストの向きを変更するにはどうすればよいですか?


そして、もう1つ、stackoverflow.com
Nikos Alexandris

stackoverflow.com/q/1330989/946850との重複がありますが、その質問はテキストのサイズ変更をカバーしていません。
krlmlr 2018年

回答:


292

使用theme()

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
    theme(text = element_text(size=20),
        axis.text.x = element_text(angle=90, hjust=1)) 
#vjust adjust the vertical justification of the labels, which is often useful

ここに画像の説明を入力してください

ここに ggplotsをフォーマットする方法についての良い情報がたくさんあります。を使用して変更できるパラメーターの完全なリスト(基本的にはすべてのパラメーター)を表示できます?theme


2
そうだと思うhjust=1
Artem Sokolov 2016年

ほんとだ!Artemのコメントに従って修正しましたが、画像を更新しませんでした。
Drew Steen

67

Ditto @Drew Steenの使用についてtheme()。軸のテキストとタイトルの一般的なテーマ属性は次のとおりです。

ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
  geom_point()+
  theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
        axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),  
        axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))

19

theme()を使用:

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))

19

従来の解決策に加えて、あなたはまた、フォントサイズを指定することができる相対base_sizeようなテーマに含まれるtheme_bw()(ここでbase_size使用して11である)rel()の関数です。

例えば:

ggplot(mtcars, aes(disp, mpg)) +
  geom_point() +
  theme_bw() +
  theme(axis.text.x=element_text(size=rel(0.5), angle=90))

5

多くのプロットを作成する場合、それをグローバルに設定することは理にかなっています(関連する部分は2行目です。3行を合わせて作業例です):

   library('ggplot2')
   theme_update(text = element_text(size=20))
   ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point()

4

「fill」属性を使用すると、このような場合に役立ちます。を使用して軸からテキストを削除element_blank()し、凡例付きのマルチカラー棒グラフを表示できます。以下のように修理工場で部品の取り外し頻度をプロットしています

ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x  = element_blank())

棒グラフに多くの棒があり、お互いに重ならないように読みやすく、かつ十分に小さい適切なフォントサイズを見つけることができなかったため、私の場合はこの解決策を選びました。


0

重複するラベルを処理する別の方法は、を使用することguide = guide_axis(n.dodge = 2)です。

library(dplyr)
library(tibble)
library(ggplot2)

dt <- mtcars %>% rownames_to_column("name") %>% 
  dplyr::filter(cyl == 4)

# Overlapping labels
ggplot(dt, aes(x = name, y = mpg)) + geom_point()

ここに画像の説明を入力してください

ggplot(dt, aes(x = name, y = mpg)) + geom_point() +
  scale_x_discrete(guide = guide_axis(n.dodge = 2))

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.