【R】ggplot:svg画像の作成、svg画像へのリンク埋め込み

備忘録がてら、ggplot で svg形式ファイルを作る方法とリンクの埋め込み方法を書きます。

 

svg形式ファイルとは?


svg形式ファイルは xmlをベースにしたベクター画像です。
画像情報を座標(テキスト)で持っているため、拡大しても荒くならない、容量が軽いなどの特徴があります。
一方、pngjpeg などの形式はラスター画像と言われます。

 

ggplotでの出力方法 


ggplotはsvg形式ファイルに対応していますが、svg形式を出力するために svglite パッケージが必要です。

 library(svglite)

 

ggplotでの出力方法は次のとおり。

ggsave(filename="./output_file.svg", plot=ggplot_data
       ,width=5, height=5, dpi=300, units="in", device="svg")
ggsave(filename="./output_file.svg", plot=ggplot_data) #-- ファイル名のみでも良い。

 

svg形式ファイルへのリンク埋め込み


svg形式にすることで画像内にリンクを埋め込むことができます。
annotateで埋め込んだテキストにリンクを貼って別の画像を呼び出すなんてこともできます。

理解のため、試しにやってみます。
irisデータで適当に作った散布図に文字列「テスト」のアノテーションを挿入しました。

library(tidyverse)
library(svglite)
g1 <- ggplot(data=iris, mapping=aes(x=Sepal.Length, y=Sepal.Width)) +
  geom_point() + 
  annotate("text",x=7.5,y=2.5,label="テスト",size=8)
ggsave(filename="./ggplot_test.svg", plot=g1
       ,width=5, height=4, dpi=500, units="in", device='svg')

 

このsvg形式ファイルをテキストファイルで開いて下にスクロールしていくと、ggplotでアノテーションした文字列「テスト」が書かれた部分があります。

<置換前のコード(svgファイル内)>

<g clip-path='url(#cpMzUuNTd8MzU0LjUyfDI1Ni41MXw1LjQ4)'><text x='258.64' y='181.11' style='font-size: 11.04px; font-family: Arial;' textLength='17.79px' lengthAdjust='spacingAndGlyphs'>テスト</text></g>

この文字列「テスト」をaタグに変えればリンク埋め込み済みの svg 画像の完成です。
注意点として、XLinkを使うため、href要素を xlink:href と書きます。
また、target="_blank" で別タブに飛ばすようにします。  

<置換後のコード(svgファイル内)>

<g clip-path='url(#cpMzUuNTd8MzU0LjUyfDI1Ni41MXw1LjQ4)'><text x='258.64' y='181.11' style='font-size: 11.04px; font-family: Arial;' textLength='17.79px' lengthAdjust='spacingAndGlyphs'><a xlink:href="パス/ファイル名.svg" target="_blank">テスト</a></text></g>

 

お試し画像


先ほどのサンプルコードで作ったirisデータの散布図です。
画像内の文字列「テスト」にリンクを仕込んでいます。
クリックすると、本ブログの統計サイトマップに飛ぶはず。

テスト 2.0 2.5 3.0 3.5 4.0 4.5 5 6 7 8 Sepal.Length Sepal.Width

 

以上です。

 

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。