Rで円グラフを綺麗に描く

R言語で円グラフを描くときに、いろいろやり方があるのですが、日本語ではいまいちまとまっていなかったのでここで書いておきます。

 

デフォルト

データは、サンプルにある「islands」を使います。世界の主要な陸地の広さを示したものです。
これを単純に円グラフで書いてみます。

pie(islands)

時計周りに

デフォルトではどこから開始されたのかよくわからないので、時計回りで12時の位置からスタートするようにします。

pie(islands, clockwise=TRUE)

ボーダーを白に

デザインがいけてない感じがするので、とりあえず枠線を変えてみましょう。ここでは白に変更してみます。

pie(islands, clockwise=TRUE, border="white")

ごちゃっとしたラベルを削除

円グラフの対象データが多いと、割合が少ないデータの中でごちゃっとしますよね。そういう時は、ラベルの表示数を減らしましょう。

pie(islands, clockwise=TRUE, border="white", labels=head(names(islands),4))

色を変える

グラフの色を変えてみましょう。「RColorBrewer」を使うと、いろんなカラーパレットを使うことができます。

RColorBrewer | Rのカラーパレットの使い方

最初に、カラーパレットを指定して、グラフに色を反映します。

cols <- brewer.pal(length(islands), "Set2")
pie(islands, clockwise=TRUE, border="white", labels=head(names(islands),4), col=cols)

真ん中を開ける

次に、円グラフの真ん中を空けて、ドーナツ型にしてみましょう。理屈的には、最初に通常の円グラフを描いた後に、真っ白い小さな円グラフを重ねて描きます。

cols <- brewer.pal(length(islands), "Set2")
pie(islands, clockwise=TRUE, border="white", labels=head(names(islands),4), col=cols)
par(new=TRUE)
pie(1, radius=0.5, col='white', border='white', labels='')

開けた真ん中に文字を入れる

ドーナツの真ん中にテキストを入れてみましょう。

cols <- brewer.pal(length(islands), "Set2")
pie(islands, clockwise=TRUE, border="white", labels=head(names(islands),4), col=cols)
par(new=TRUE)
pie(1, radius=0.5, col='white', border='white', labels='')
text(0, 0, labels="Text", cex=par('cex.main'), col=par('col.main'), font=par('font.main'))

 

デフォルトの円グラフから考えると、だいぶ見栄えが変わりましたよね。色々工夫することで、R言語でも見栄えをよくできるので、R言語ユーザーはぜひ試してみてください。