1. ホーム
  2. r

[解決済み] ggplot geom_text フォントサイズ制御

2022-03-01 08:06:45

質問

の棒グラフのラベルのフォントを10に変えようとしたのですが、どうすればいいですか? ggplot2 というような方法で

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_text を3などに変更すると、軸ラベルと同様にフォント10のように見えるようになります。

と思っているのですが、どうなんでしょう?は theme(text=element_text(size=10)) はラベルに適用されないのですか?

また、なぜ geom_text() とは異なります。 theme(text=element_text()) ?

解決方法は?

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

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)

size の中にある geom_text の大きさを変更します。 geom_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()) で 10 の大きさが違うのはなぜですか?

そうですね、違いますね。ざっと手作業で確認したところ、以下のように~(14/5)の比率になっているようです。 geom_text サイズから theme のサイズを指定します。

ですから、均一なサイズのための恐ろしい修正は、この比率で拡大縮小することです。

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")) 

もちろん、これでは なぜ ということです(もっと賢明な方法があると思いますが)。