IshidaMotohiro / RMeCab

Interface to MeCab
30 stars 10 forks source link

ggplotでグラフを作成する際に表示されるエラーについて質問です。 #14

Closed masane closed 2 years ago

masane commented 2 years ago

いつも貴重な知見を共有いただきありがとうございます。 『Rによるテキストマイニング 実践編』を活用させていただいております。 予期せぬエラーが生じたため質問させていただきたく投稿いたしましたが、 こちらで間違い無かったでしょうか。

以下、当方の環境となります。

sessionInfo() R version 4.1.1 (2021-08-10) Platform: x86_64-apple-darwin20.4.0 (64-bit) Running under: macOS Big Sur 11.6

Matrix products: default LAPACK: /usr/local/Cellar/r/4.1.1/lib/R/lib/libRlapack.dylib

locale: [1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages: [1] stats graphics grDevices utils datasets methods base

other attached packages: [1] RMeCab_1.07 stringr_1.4.0 dplyr_1.0.7 purrr_0.3.4 magrittr_2.0.1 ggplot2_3.3.5

loaded via a namespace (and not attached): [1] rstudioapi_0.13 tidyselect_1.1.1 munsell_0.5.0 colorspace_2.0-2 R6_2.5.1
[6] rlang_0.4.11 fansi_0.5.0 tools_4.1.1 grid_4.1.1 gtable_0.3.0
[11] utf8_1.2.2 cli_3.0.1 DBI_1.1.1 withr_2.4.2 ellipsis_0.3.2
[16] digest_0.6.28 assertthat_0.2.1 tibble_3.1.5 lifecycle_1.0.1 crayon_1.4.1
[21] farver_2.1.0 vctrs_0.3.8 glue_1.4.2 labeling_0.4.2 stringi_1.7.5
[26] compiler_4.1.1 pillar_1.6.3 generics_0.1.0 scales_1.1.1 pkgconfig_2.0.3

『実践編』におけるセンチメント分析後の感情極性値の時系列について、 ggplotを使用してグラフを書こうとしたところエラーが発生しました。 おそらく前書で紹介されておりましたフォントがうまくディレクトリに収まっていないか、 あるいはパスが指定できていないかが問題かと考えておりますが、 対処できず困っております。 ご教授いただけますでしょうか。

以下、エラーメッセージです。

em_text %>% ggplot(aes(x = ID, y = EM)) + geom_line() grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, でエラー: 多角形の頂点が見付かりません 追加情報: 50 件以上の警告がありました (最初の 50 個の警告を見るには warnings() を使って下さい)

warnings() 警告メッセージ: 1: In grid.Call(C_stringMetric, as.graphicsAnnot(x$label)) : フォントファミリー "TakaoPGothic" に対してフォントが見つかりません →このメッセージがあと49回続いております。

IshidaMotohiro commented 2 years ago

グラフィックスでの日本語表示の問題は悩ましいです。

お使いの環境がMacのようなので、目的のグラフを作成する前に、一度、以下を実行してみてください。

library(ggplot2)
theme_set(theme_grey(base_family = "HiraKakuProN-W6"))

最近は、ragg パッケージというのがあって、フォントの問題をいろいろ解消してくれるようです。機会があれば、raggについて検索をして見られると良いかもしれません。

masane commented 2 years ago

回答ありがとうございます。 ご教授いただいた通り実行してみましたが、変わらずエラーが表示されました…。 フォントが参照されているというディレクトリを見てみたところ空だったのですが、これは正しいのでしょうか?

theme_set(theme_grey(base_family = "HirakakuProN-W6")) em_tweets %>% ggplot(aes(x = ID, y = EM)) + geom_line() grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, でエラー: 多角形の頂点が見付かりません 追加情報: 警告メッセージ: grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, で: フォントファミリー "HirakakuProN-W6" に対してフォントが見つかりません

日本語表示自体難しいものなのですね。 さっそくraggパッケージについて調べてみたいと思います。

IshidaMotohiro commented 2 years ago

RStudioを立ち上げた直後に以下を実行するとどうなりますか?

library(ggplot2)
library(forcats)
iris$Species <- fct_recode(iris$Species,あやめ = "setosa", アヤメ= "versicolor", 菖蒲 = "virginica") 
ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text()

ちょっと気になっているのが、最初の投稿に 「フォントファミリー "TakaoPGothic" に対してフォントが見つかりません」という警告があるのですが、このフォントはUbuntu系ではデフォルトで入っていますが、Macの方に追加して、何らかの方法で RStudio が参照するような設定をしておられるのでしょうか?例えばホームディレクトリに .Rprofile を置くなど。 ターミナルで cat .Rprofile とすると、内容が確認できるかと思いますが。

IshidaMotohiro commented 2 years ago

上の描画コードで警告があれば、それを教えてください。 警告等はなく、単に、画像で豆腐(□)担っている状態であれば、以下を試してみてください。

ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text(family = "HirakakuProN-W6")))

masane commented 2 years ago

お返事ありがとうございます。 .Rprofileについてですが、入門編の手順にしたがって作成したものがホームディレクトリにあります。 すみません、Macユーザーの場合は導入しなくても良かったのでしょうか?

library(ggplot2) library(forcats) iris$Species <- fct_recode(iris$Species,あやめ = "setosa", アヤメ= "versicolor", 菖蒲 = "virginica") ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text()

の実行結果ですが、.Rprofileの一番下の行

theme_set(theme_gray(base_size = 12, base_family = "*****"))

の*****部分を"HiraginoSans-W3"と指定した場合は表示されます。 このプロファイルを読み込んだときにデフォルトで設定されていた"TakaoPGothic"や、"HirakakuProN-W6"を指定した場合は表示されません。

続く、 ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text(family = "HirakakuProN-W6") は前回までと同様、

警告メッセージ: 1: In grid.Call.graphics(C_text, as.graphicsAnnot(x$label), ... : フォントファミリー "HirakakuProN-W6" に対してフォントが見つかりません と表示されます。

masane commented 2 years ago

【追記】 .Rprofileの一番下の行

theme_set(theme_gray(base_size = 12, base_family = "*****"))

の*****部分を"HirakakuProN-W6"と指定した場合は

library(ggplot2) library(forcats) iris$Species <- fct_recode(iris$Species,あやめ = "setosa", アヤメ= "versicolor", 菖蒲 = "virginica") ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text() grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, でエラー: 多角形の頂点が見付かりません 追加情報: 50 件以上の警告がありました (最初の 50 個の警告を見るには warnings() を使って下さい)

warnings() 警告メッセージ: In grid.Call(C_textBounds, as.graphicsAnnot(x$label), ... : フォントファミリー "HirakakuProN-W6" に対してフォントが見つかりません

このように表示されます。

IshidaMotohiro commented 2 years ago

状況を理解いたしました。 私が前著のために用意した .Rprofile が最新Rのバージョンに適合していないため、かえって日本語描画の妨げとなっていることが分かりました。申し訳ないです。

いま一度、次のコードを実行し、RStudio を起動し直してから、上の描画コードを試してみて頂けるでしょうか?

source("http://rmecab.jp/R/Rprofile.R")

ひょっとしたら、いまのRでは Rprofile に日本語やフォント関係の設定を指定しなくてもいいのかもしれません。 もし、Rprofileを作り直しても日本語が表示されないようなら、ターミナルで以下を実行して、RStudioを起動し直してから描画を試みてください。

rm .Rprofile

masane commented 2 years ago

おはようございます、お返事ありがとうございます。 Rprofileの読み込み直し、ターミナルからのリムーブと 一通り試してみましたが描画されません…。

library(ggplot2) library(forcats) iris$Species <- fct_recode(iris$Species,あやめ = "setosa", アヤメ= "versicolor", 菖蒲 = "virginica") ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text() ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text(family = "HirakakuProN-W6") 50 件以上の警告がありました (最初の 50 個の警告を見るには warnings() を使って下さい)

以上はリムーブ後の結果ですが、プロファイルを作成し直した後も同様の結果が表示されました。

IshidaMotohiro commented 2 years ago

もう一度

source("http://rmecab.jp/R/Rprofile.R")

を実行し、RStduio 起動後、アヤメデータの描画を試みて、その際、表示される警告を教えてください。

masane commented 2 years ago

library(ggplot2) library(forcats) iris$Species <- fct_recode(iris$Species,あやめ = "setosa", アヤメ= "versicolor", 菖蒲 = "virginica") ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text()

ここまでは正しく実行されます、ただその結果は豆腐(□)になっています。

ggplot(iris, aes(Sepal.Length, Petal.Length, label = Species)) + geom_text(family = "HirakakuProN-W6")

これを実行すると、グラフは描画されますが豆腐(□)も消えてしまい、

50 件以上の警告がありました (最初の 50 個の警告を見るには warnings() を使って下さい)

と表示されます。 以下、warnings()の実行結果です。

warnings() 警告メッセージ: 1: In grid.Call.graphics(C_text, as.graphicsAnnot(x$label), ... : フォントファミリー "HirakakuProN-W6" に対してフォントが見つかりません

この結果が50件表示されます。

masane commented 2 years ago

いま現在、ホームディレクトリには新たに読み込んだ.Rprofileがあります。

IshidaMotohiro commented 2 years ago

Mac 上の R あるいは Rstudio 環境一般の問題に帰着することになりますが、お使いのMacの別ソフトウェアの設定(TeXなど)が影響している可能性がありそうに思うのですが、具体的にいまは提案できません。また投稿します。

もし、この間に、解決することがあったら、情報を共有頂けると幸いです。

masane commented 2 years ago

返信が遅くなってしまい申し訳ありません! お忙しいなかご対応いただき本当にありがとうございました。 私の方でも改めて解決策を探究してみたいと思います。 もし良い方法がお分かりになられましたらご教授いただきたいです。 よろしくお願いいたします。