ggplot PDF 画像の一部が消える

ggplot PDF 画像の一部が消える

私はドキュメントクラスとテンプレートを使用していますtufte-book。画像を PDF 形式にエクスポートしggplot2、それを LaTeX 環境に組み込んでいますfigure

すべて順調に進んでいたのですが、ある日グラフの点が突然消えてしまいました。その点はドキュメントの以前のバージョンでは存在していたのです。具体的には、ggplot2(のデフォルトの図形geom_point)が表示されなくなりました。他の図形は問題なく表示されます。再インストールを試しましたggplot2、(reprexのように)を削除しようとしましたtufte-bookが、ダメでした。また、xelatexとpdflatexの両方でビルドしてみました。これはさらに混乱を招きます。使用済み問題なく動作し、何を変更したのか思いつきません。何かヒントがあれば教えてください。

参考までに、実際のggplot2私が含めている生成PDF:

実際の画像

これは私の LaTeX ドキュメントでどのように表示されるかを示します (tufte-latex バージョンですが、reprex の documentclass{article} バージョンでも問題が発生します)。

LaTeX の画像

これがコードです。ここでは何も変わったことをしているわけではないと思います。

グラフを生成するには:

library(tidyverse)

# Police and crime
library(wooldridge)
data(crime4)

ggplot(crime4, aes(x = polpc, y = crmrte)) + 
  geom_point() + 
  theme_minimal() + 
  scale_x_log10() + 
  scale_y_log10() + 
  labs(x = "Police per Capita (log scale)",
       y = "Crime Rate (log scale)")
ggsave('crime1.pdf', width = 6, height = 5)

そしてLaTeXドキュメント自体

\documentclass{article}

\usepackage{graphicx}

\begin{document}

\begin{figure}[h!]
    \caption{Police Presence and Crime Rate by County, North Carolina 1981-1987}
    \label{fig:causaldiagrams-crime1}
    \includegraphics{"crime1.pdf"}
\end{figure}

\end{document}

答え1

申し訳ありませんが、コメントできませんので、回答させていただきます。LaTexエディタ内のプレビューでドットが欠落していますか、それとも別のPDFビューアから開いたコンパイル済みドキュメントでも欠落していますか?私も同じ問題を抱えていましたが、ポイントが欠落していたのは組み込みのTeXmaker PDFビューアだけで、他のプログラムでは欠落していませんでした...私の場合、Rで生成されたすべての丸いドット({16、19、20、21}のpch)が欠落していましたが、それはPDFビューアの問題(つまり、理解できるシンボル)。コンパイルした完全なドキュメントを、プロット PDF を正しく表示したのと同じ PDF ビューアで開いてみてください。うまくいけば、それは常に PDF ビューアでした。

さらに、「同じ」PDF ビューアでも OS によって動作が異なる場合があることに注意してください。TeXmaker は Linux ではドットを表示しますが、Windows ではドットを表示しないので、最初は OS の問題だと思いました。そこで、「同じこと」を 2 回実行しましたが、結果は異なりました。

Marijinが指摘したように、Rで使用されている円記号が正しく表示されないという問題だと思います。pdfcairo_pdfの代わりに提案されたデバイスを使用するか、円の代わりに別の記号を使用することができます。また、次のことを試してみることもできます。

geom_text(label = "\u2022", size = 10)

(パッケージUnicode(?) が必要になる場合があります)。ポイントの代わりにテキストをプロットすると、さまざまなシンボルや文字ファミリを試すことができます。

更新: また、ポイントの不透明度を 1 以外の値に設定すると (たとえば、ggplot では単に を設定するalpha=0.99)、R が「問題のある」ZapfDingbats 文字を使用しないようにできることもわかりました。試してみる価値はあるかもしれません。私の場合はうまく機能しているようです。

関連情報