ggplotgeom_textフォントサイズコントロール


93

ggplot2次のようにして、棒グラフのラベルのフォントを10に変更しようとしました。

ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
    geom_bar(stat="identity",position="dodge",colour="white") + 
    geom_text(aes(label=V2),position=position_dodge(width=0.9),
                                                 hjust=1.5,colour="white") +
    theme_bw()+theme(element_text(size=10))

ggsave(filename="barplot.pdf",width=4,height=4)

しかし、結果の画像は棒グラフラベルのフォントサイズが非常に大きくなります。

それから私geom_text()はこれで修正することを考えました:

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")

ラベルフォントはさらに大きくなります...

内のサイズをgeom_text3のようなものに変更でき、軸ラベルと同様にフォント10のようになります。

何が起こっているのだろうか?DOESはtheme(text=element_text(size=10))、ラベルには適用されませんか?

そして、なぜ10インチのサイズがgeom_text()それと異なるのtheme(text=element_text())ですか?

回答:


142

テキスト/ラベルのサイズを変更するためのいくつかのオプションがあります

library(ggplot2)

# Example data using mtcars

a <- aggregate(mpg ~ vs + am , mtcars, function(i) round(mean(i)))

p <- ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) + 
            geom_bar(stat="identity",position="dodge") + 
            geom_text(data = a, aes(label = mpg), 
                            position = position_dodge(width=0.9),  size=20)

変化の大きさのラベル。 sizegeom_textgeom_text

p <- p + theme(axis.text = element_text(size = 15)) # changes axis labels

p <- p + theme(axis.title = element_text(size = 25)) # change axis titles

p <- p + theme(text = element_text(size = 10)) # this will change all text size 
                                                             # (except geom_text)


このため、geom_text()のサイズがtheme(text = element_text())のサイズと異なるのはなぜですか?

はい、違います。簡単な手動チェックを行ったところ、geom_textサイズとthemeサイズの比率が〜(14/5)のようです。

したがって、均一なサイズの恐ろしい修正は、この比率でスケーリングすることです

geom.text.size = 7
theme.size = (14/5) * geom.text.size

ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) + 
  geom_bar(stat="identity",position="dodge") + 
  geom_text(data = a, aes(label = mpg), 
            position = position_dodge(width=0.9),  size=geom.text.size) + 
  theme(axis.text = element_text(size = theme.size, colour="black")) 

もちろん、これは理由を説明していませんか?そしてピタです(そして私はこれを行うためのより賢明な方法があると思います)


2
興味深いことに、14/5の比率を見つけるために何をチェックしましたか?
olala 2014

35
そうですか。最近読んだことを思い出します。単位の違いだと思います。geom_textのデフォルトの5は5mmで、theme()サイズの単位はポイントです。1ポイントは1/72インチ= 0.35mmなので、geom_text()の1は1mm、1 / 0.35 = 〜14 / 5 :)
olala 2014

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