トップ 履歴 一覧 ソース 検索 ヘルプ ログイン

ggpmiscパッケージで数式表示が乱れる場合の対処


キーワード

最終更新時間:2022年01月21日 20時54分06秒
アフィリエイト・広告について
プライバシーポリシー

Windows環境で確認すると、問題自体が発生しなかったので、Linux固有の問題なのかもしれません。

はじめに

ggpmiscパッケージは、ggplot2によるグラフィックスに、数式やモデルの評価指標値などを表示するためのパッケージです。以下のようなグラフィックスが作成できます。

実際のところ、研究論文やビジネス上の分析レポートで、グラフの中に式を書き込むことはあまりないかもしれませんが、研修講師として教材を作っていると、「それっぽい」絵として、グラフと式を組み合わせて「線形回帰のイメージ図」を作りたいことがあります。そのような際に有用です。

数式表示が乱れる

以前からggpmiscパッケージを使っていて、昨年作成した教材では、特に問題なく式が表示されていたのですが、先日、再利用しようとグラフを作成すると、"visible space" や豆腐とも言うべき、□が入るようになっていました。



RStudioのグラフィックスバックエンドは "AGG" にしています

PNGやJPEG画像として出力しても同様です。「豆腐」の部分は、sep = "~~~" としていて、実際に空白が入るのですが、それが見えるのは困ります。なお、PDF形式やSVG形式で出力するぶんには、豆腐にはならず、特に問題はないようです。何がいけないのか、と調べていると、ggpmiscパッケージのissueに、「ggpmiscパッケージから呼び出しているggtextの不具合みたいだ」という開発者の投稿がありました。

そして、ggtextパッケージを見ると、最近更新がされておらず、またソースコードを辿っても、Rに組み込み (標準添付) の plotmath() 関数を使っているらしいというところまでしかわからず、直接的な解決策は見つかりませんでした。

実際のところ、私はR MarkdownからPowerPointに出力して教材を作っており (研修ギョーカイでは「パワポ納品」が求められます)、PDFやSVGからPNG画像を作成し、差し込むというのは面倒ですし、できればコードチャンクからグラフィックスを生成したいです。そのため、いろいろゴチャゴチャと試行錯誤し、とりあえず自分の課題は解決できるようになりました。

Rプログラムにおける解決策

結論としては、showtextパッケージを使います。なぜ解決するかはわかりません (笑)。以下のように、数式を表示したいフォントを登録・使用すると、プレビュー、ファイル出力ともに正しく表示されるようになります。

ただ、この方法では $\hat{y}$ や $x$, $R^{2}$ といった記号が斜体になりません。ggpmiscの機能で italic(x) などとしても変化はありません。また、斜体や太字などのファミリーが1つになっている *.ttc 形式のフォントを指定しても効果はありませんでした。ひとつの解決策としては、DajaVu Sans Obliqueなど、もともと斜体のフォントを指定することが考えられますが、それはそれで、数字まで斜体になってしまいます。まぁ、そこはもうそんなもんだと思うしかないですね。そこが研修の本質ではないので。

R Markdownにおける解決策

R Markdownファイルからドキュメントを出力する場合も、チャンクに上記のようにshowtextパッケージを使用するコードを書くだけで解決します。ただし、setup チャンクにshowtextパッケージの設定を記述すると、すべてのチャンクに影響してしまうので、注意が必要です。また、詳しい仕組みは知りませんが、showtextパッケージを使用すると、データポイントのサイズやフォントサイズなどが、標準の単位系から変化するようで、やたらと大きくなったりしますので、数値の調整を行ってください。


カテゴリ: [R]