-
データ分析力養成講座
3.棒グラフ
回答
Rにおいては日本語の全角でエラーが出ることがあるため、基本は半角英数を用いた方が良い。
回答
データはBに入っているということでよろしいでしょうか。
たとえば、head(B)としたら、データは問題なくデータが出てくる状態でよろしいでしょうか。
そのうえで、棒グラフで国名が入らないというのは、棒グラフは作れるが、国名が横軸に表示されないということでしょうか。文字化けしているという認識で以下説明いたします。
可能であればstr(B)としてname カラムがちゃんと「文字列(factor or character)」になっているか確認してください。
考えられるのはMacを使っているということであればエンコードの問題です。データをコピーする際に以下の命令を追記してみてください。
文字化けの理由がエンコードであれば以下の命令文で回避可能かと。
B <- read.table(pipe(“pbpaste”), header = TRUE, fileEncoding = “UTF-8”)
または
B <- read.table(pipe(“pbpaste”), header = TRUE, encoding = “UTF-8”)
これで直らない場合は、ggplot側に工夫が必要かもしれません。
ggplot(B, aes(x = factor(name), y = data, fill = name)) + geom_bar(stat = “identity”)
x軸にカテゴリ名(ここでは国名)が出ない場合は、上のように as.factor() で明示的に指定することで表示されることがあります。
またはas.character(name)とする方法もあります。ただし表示されることもある、というだけですので、Macの場合ですと、難しいかもしれません。
またはelement_textで改善することもあるので、以下のように入れてみても良いかもしれません。
ggplot(B, aes(x = factor(name), y = data, fill = name)) + geom_bar(stat = “identity”) + theme(axis.text.x = element_text(angle = 45, hjust = 1))
回答
3パターン方法を提示いたします。
解決策:フォントを明示的に指定する
方法①:theme() でフォントを指定する
library(ggplot2)
theme_set(theme_gray(base_family = “Hiragino Maru Gothic Pro”))
ggplot(B, aes(x = factor(name), y = data, fill = name)) + geom_bar(stat = “identity”) + theme(axis.text.x = element_text(angle = 45, hjust = 1))
Hiragino Maru Gothic Pro はMacに標準でインストールされている日本語フォントです。他にも “Hiragino Sans”, “Osaka”, “Yu Gothic” なども使えます。
方法②:extrafont パッケージを使う
インストールと読み込み
install.packages(“extrafont”)
library(extrafont)
フォントのインポート(初回のみ)
font_import(paths = “/System/Library/Fonts”, prompt = FALSE)
loadfonts(device = “pdf”) # または device = “win” / “mac”
ggplot(B, aes(x = factor(name), y = data, fill = name)) + geom_bar(stat = “identity”) + theme(text = element_text(family = “Hiragino Maru Gothic Pro”))
方法③:macOSのフォント確認と指定
使えるフォントの確認方法:
quartzFonts()
または、macOSターミナルで以下を実行:
fc-list :lang=ja
これによって、フォント確認をして、それに沿ったフォントを方法①または②で指定してあげることで改善します。
以上、お答えになりましたでしょうか。
これらの方法で改善しない場合は、おっしゃる通り、Macで日本語表示が難しいということで、割り切っていただくしかないかもしれません。
また、今回紹介したものは、私の手持ちの確認用としているMacで確認しましたが、Macの場合バージョンアップすると命令文が結構変わることも多いので、最終的には割り切っていただくことになるかもしれません。