15

ggplot2 プロットを svg 形式で保存しようとしています。プロットは Knitr ドキュメントの一部として生成されるため、ggsave 関数は使用していません。プロット用に指定したデバイスは「svg」です。

問題は、少なくともinkscapeで開いたときに、元のプロットのテキスト要素がsvgファイルのパスとして表示されることです。svg のソース コードにも、テキストが含まれているようには見えません。

私のプロット関数は別のファイルで定義されています:

## @knitr plot_histogram
ggplot(mainFrame[complete.cases(mainFrame),]) 
+ geom_boxplot(aes(x=source, y = pPfam, fill = source)) 
+ scale_y_continuous(limits = c(0,1)) 

Knitr ドキュメントでは、関数を呼び出し、「svg」デバイスを使用して画像を保存します。

```{r plot_histogram, dev = 'svg', fig.width= 7, fig.height=4, fig.show='hold', fig.path="figure/summary"}
```

だから、svgを保存するときにテキストを保持したいことを「svg」デバイスまたはggplot2に伝える方法がわかりませんか?問題が解決する場合は、別のグラフィックス デバイスを使用することもできます。

よろしくお願いします。

4

2 に答える 2

16

svg()ベース R のデバイスもパッケージのデバイスもこれをサポートしてCairoSVG()いません。Cairoすべてのテキストは次のようなグリフに変換されます

<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 3.921875 -2.046875 L 3.921875 0.... "/>
</symbol>

なぜこれが必要なのかわかりませんが、r-devel メーリング リストに機能要求を提出することをお勧めします。ggplot2この質問は/に固有のものではありませんknitr。これは SVG デバイスからのものです。

アップデート

OPは、実際に機能することを指摘し、RSvgDevice次の方法でデバイスを指定できます。

my_svg <- function(file, width, height) {
  library(RSvgDevice)
  devSVG(file = file, width = width, height = height, bg = "white", fg = "black",
         onefile = TRUE, xmlHeader = TRUE)
}

次に、knitrコード チャンクで、オプションを使用しますdev='my_svg'

于 2013-07-11T08:27:40.410 に答える
1

プロットを PDF として保存することもできます。その後、Inkscape を使用してそれらを SVG に変換します (最適化: 小さいサイズの場合。適切な画像を得るには精度を 4 より大きくする必要があります)。

于 2014-06-06T12:56:00.413 に答える