サイズが小さい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() ###########################################
出力例
少しでも、あなたの解析が楽になりますように!!