サイズが小さいSVGファイルを作成するパッケージの紹介です。コマンド例ではRに収録されている「svg」コマンドと比較すると約7割ほど小さいファイルサイズとなりました。とにかくSVGファイルのサイズを小さくしたい方にお勧めなパッケージです。
パッケージのバージョンは2.1.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("svglite")
実行コマンド
詳細はコメント、パッケージヘルプを確認してください。
#パッケージの読み込み
library("svglite")
#svgファイルの作成:svgliteコマンド
#grDevices::dev.off()コマンドと組み合わせて使用します
svglite(filename = "ここを実行しても空ファイル.svg", #出力ファイル名
width = 10, #横幅;インチ
height = 8, #縦幅;インチ
bg = "white", #背景の色
pointsize = 12, #ポイントサイズ
system_fonts = list(), #フォントの設定
user_fonts = list(),
web_fonts = list(),
scaling = 1, #スケールの設定
)
###ここにプロットの内容を記述#####
dev.off()
###########################################
###実行例:作業フォルダにファイルが保存#####
#環境で日本語が文字化けする可能性があるので念のため設定
#出力ファイルサイズ:90,112 バイト
svglite(filename = "Test.svg",
system_fonts = list(sans = "Yu Gothic"))
#初期設定で利用可能:出力ファイルサイズ:319,488 バイト
#svg(filename = "Testcairo.svg", onefile = TRUE, family = "Yu Gothic")
#tidyverseパッケージがなければインストール
if(!require("tidyHeatmap", quietly = TRUE)){
install.packages("tidyHeatmap");require("tidyHeatmap")
}
###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 300
TestData <- tibble(Group = factor(rep(paste0("グループ_", 1:30),
each = 10),
level = paste0("グループ_", 1:30)),
SubGroup = factor(rep(paste0("SubGroup_", 1:10),
time = 30),
level = paste0("SubGroup_", 1:30)),
Value = sample(c(1:100), n, replace = TRUE),
SubValue = sample(c(1:100), n, replace = TRUE),
Flag_1 = factor(rep(2:3, each = 10, time = 15)),
Flag_2 = factor(rep(c("OK", "NG"), each = 1,
time = 150)),
FlagValue_1 = rep(1:10, each = 10, time = 3),
FlagValue_2 = factor(rep(11:20, time = 30)),
FlagValue_3 = rep(1:10, each = 10, time = 3),
FlagValue_4 = rep(11:20, time = 30),
FlagValue_5 = rep(11:20, time = 30))
########
TestData %>%
#heatmapをグループで分割するときはgroup_byで設定
dplyr::group_by(Flag_1, Flag_2) %>%
#heatmapコマンド
heatmap(.row = Group, .column = SubGroup, .value = Value,
#データのスケール化;"none","row","column","both)
.scale = "row",
#クラスタリングの適応有無
cluster_rows = FALSE, cluster_columns = TRUE,
#クラスタリング手法
clustering_distance_rows = "pearson",
#カラーパレットを指定
palette_value = c("#4b61ba", "#A9A9A9", "#a87963"),
#グループ分割の色を指定
palette_grouping = list(
#Flag_1の分割
c("#66C2A5", "#FC8D62"),
#Flag_2の分割
c("#b58b4c", "#74a6aa")
)) %>%
#x,y方向にグラフを付与:add_point,add_bar,add_lineコマンド
#データ内容から付与方向は自動で判断
add_point(FlagValue_3, palette = NULL,
annotation_name_gp = grid::gpar(fontsize = 8)) %>%
add_line(FlagValue_4, palette = NULL,
size = unit(0.4, "cm")) %>%
add_bar(FlagValue_5, palette = NULL, size = unit(1, "cm"),
annotation_name_gp = grid::gpar(fontsize = 8)) %>%
#x,y方向にデータを付与:add_titleコマンド
#データ内容から付与方向は自動で判断
add_tile(FlagValue_1, show_legend = TRUE,
annotation_name_gp = grid::gpar(fontsize = 6)) %>%
add_tile(FlagValue_2, show_legend = FALSE)
dev.off()
###########################################
出力例

少しでも、あなたの解析が楽になりますように!!