


摘 ?要:由于在科研或者教學工作中需要美觀化展現不同數據集的交集,目前維恩圖在各個學科領域應用廣泛。但受制于目前繪制工具和平臺的限制,在線維恩圖繪制方法軟件提供的繪制維度普遍小于5個,所以科研工作人員迫切地需要一款繪圖方法來表達更高維度的維恩圖來展現自己的結果。該文利用Perl語言和SVG相結合,開發出一套可繪制高緯度維恩圖的方法,僅需要準備好純文本數據文件,執行程序命令即可得到高質量的維恩矢量圖。
關鍵詞:維恩圖 ?Perl語言 ?SVG ?科研工具 ?Venn Plot
中圖分類號:TP393.092文獻標識碼:A 文章編號:1672-3791(2021)10(c)-0000-00
Design of High-Level Venn Diagram Based on Perl Language
JIN Huihui
(Yangzhou Institute of Technology, Yangzhou, Jiangsu Province, 225000 China)
Abstract: Because the intersection of different data sets needs to be aesthetically displayed in scientific research or teaching work, Venn diagrams are currently widely used in various disciplines. However, due to the limitations of the current drawing tools and platforms, the online Venn diagram drawing method software provides generally less than 5 drawing dimensions. Therefore, scientific researchers urgently need a drawing method to express a higher-dimensional Venn diagram to show themselves their results. Using the combination of Perl language and SVG, this paper developed a set of methods that can draw high-latitude Venn diagrams. We just need to prepare a plain text data file and execute commands to get the target high-quality diagram.
Key Words: Venn diagram; Perl language; SVG; Research tools; Venn Plot
Venn圖[1]也叫維恩圖, 即用一條封閉曲線直觀地表示集合及其關系的圖形。由英國的邏輯學家韋恩提出,他是第一個想到用這樣的圖來表示事物之間關系的人。維恩圖一直是會議和演示的主要內容,維恩圖提供了一種清晰、有效的方式來直觀地展示數據集之間的關系。在維恩圖中,圓圈代表具有共享屬性的事物組。這些圓圈重疊的區域代表同樣屬于重疊組的個人。維恩圖中的圓圈可以部分重疊、完全重疊,甚至可以分開,一目了然地看到組之間的關系。維恩圖有很多用途:解釋關系、顯示組織系統、說明復雜的事物和系統。維恩圖可以幫助團隊在頭腦風暴或解決問題時分解復雜的想法。維恩圖的應用不勝枚舉,在生物學領域常用來表示不同分組樣本的結果重疊情況。
Perl[2]是一種功能豐富且可以穩定的跨平臺編程語言,Perl語言的應用范圍很廣,運行在超過多種計算機平臺上,適用廣泛,Perl被用于圖形編程、系統管理、網絡編程、金融、生物以及其他領域。Perl被稱為腳本語言中的瑞士軍刀,由于英文翻譯的首字母原因,簡稱為Perl(Practical Extraction and Report Language),在生物學方面的應用較多,其中核酸和蛋白質文本處理能力表現優異,該研究結合Perl的字符處理能力和SVG的表現渲染能力,巧妙地展現了交集數據集。
1 ?維恩圖的現狀分析
1.1 ?基于PubMed公共數據庫的引用統計
美國國家醫學圖書館(The United States National Library of Medicine, NLM),由美國聯邦政府經營管理,是世界上最大的醫學圖書館,其前身為成立于1836年的美國公共衛生部部長辦公室圖書館。在各個學科發展方向具有重要的指導意義。PubMed系統是由美國國家醫學圖書館(NLM)的國家生物技術信息中心(NCBI)開發研制的一個醫學文獻網絡數據庫。維恩圖在PubMed中出現的頻率有逐年上升的趨勢,越來越成為科研人員展現數據的一個熱門方法。圖1展示的圖片數據來源PubMed系統檢索,通過搜索“Venn Diagram”關鍵詞匹配下載到最近10年的公共醫學論文引用數據,引用趨勢如圖1所示。
從圖1中可以看出,近10年來,韋恩圖方法[3]的引用頻率逐年提高,其中增幅較大的是2020年度。說明這個展示和統計方法在各個學科的應用越來越多,但是目前市面上可以供使用的工具方法有較大的缺陷和局限性,其中數據集表現維度就受到嚴格的控制,普遍是4個維度的表現形式,對于科研人員來說,是個需要急需解決的問題。
1.2 ?維恩圖的主流在線軟件情況
目前網絡上提供免費在線維恩繪圖軟件眾多[4],表1為常用軟件信息比較。其中以有權威性的西班牙馬德里大學國家生物技術中心提供的在線工具VENNY 2.1版本為例,如圖2所示,目前該網站可以提供的繪圖維度最高為4個維度,對應科研人員來說,如果數據集超過4個,則展示會受制于在線軟件[5]。
通過圖2為案例,運用VENNY2.1版本工具展示,可以看出在線工具的巨大局限性,其只可以提供4個維度的數據交集展示,這對于實際的科研、統計等需求是不足的。
2 ?基于Perl語言開發程序原理
2.1 程序開發思路
基于SVG[6]的格式模板,利用Perl語言進行輸入文件讀取并依據文本文件的個數和文本文件的單行關鍵詞進行哈希存儲處理,然后對哈希存儲的數據重新進行SVG文件寫入,生成新的SVG格式模板文件,利用常規的illustrator或者Photoshop既可以打開該文件,同時可以對高質量的矢量圖(SVG圖)進行PNG、JPG等格式轉換。
2.2 程序開發代碼
#!/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;
my ($help);
my $figlabel = "";
GetOptions(
'help'=>\$help,
'figlabel:s'=>\$figlabel,
);
pod2usage 1 if($help or @ARGV < 2 or @ARGV > 7);
my %venn;
my %lab;
my $count = 0;
for my $name(@ARGV){
open FILEINPUT,"$name" or die "Please Check Directory file : $name\n";
my @family = <FILEINPUT>;
close FILEINPUT;
chomp @family;
my %fam;
for(@family){
next if(/^\s*$/);
$fam{$_} = 1;
}
for(keys %fam){
$venn{$_} += 2**$count;
}
$name = `basename $name`;
chomp $name;
$name =~ s/.txt//;
$lab{2**$count} = $name;
$count ++;
}
my %count;
for(keys %venn){
$count{$venn{$_}} ++;
print ($count{$venn{$_}} ++);
print ("\n");
}
open FILE,"/svgDB/venn$count.svg";
while(<FL>){
if(/>(\d+)<\/text>/){
my $num = defined $count{ $1 } ? $count{ $1 } : 0;
s/>(\d+)<\/text>/>$num<\/text>/;
}elsif(/>([A-Z])<\/text>/){
my $flag = 2 ** (ord($1) - ord("A"));
my $lab = defined $lab{$flag} ? $lab{$flag} : "undef";
s/>[A-Z]<\/text>/>$lab<\/text>/;
}else{
s/>figlabel<\/text>/>$figlabel<\/text>/;
}
print;
}
close FILE;
3 ?基于Perl語言的繪制過程及結果
3.1 程序執行
在windows系統或mac系統環境安裝perl編程語言,進入終端界面調用perl解釋器運行,執行命令如下:
perl venn.pl A_file.txt B_file.txt C_file.txt > A_B_C.svg
3.2 程序執行結果文件匯總
分別模擬了7個數據文件,各個文件命名為A.txt、B.txt、C.txt、D.txt、E.txt、F.txt、G.txt,在每個文件里是單行一個關鍵詞,通常情況下是英文狀態下的關鍵詞。文件里面行與行之間允許出現空行。表2是對7個數據集分別進行6個組合計算。
分別對6個組合執行運算得到對應的圖表數據,并展示不同維度的韋恩圖,具體見圖3,按照環形圖的個數依次分類,其中最高7個數據集維度見圖4。
圖4中A、B、C、D、E、F、G標簽分別對應每個數據集的名稱,各個交叉區域單元的數字是指交集共有部分的統計頻率,按照維恩統計規律來看,目前呈現表3分布如下。
如圖5所示,隨著維恩圖維度的提供,出現的交集區域(亞區域)個數快速上升,難度也越來越大。通過分析可以發現,設定維度個數為N,亞區域對應為Mn,則對應關系公式為:Mn=2N-1。
4 結語
該文通過分析國外研究趨勢和現實發展需要,通過結合Perl編程語言和SVG語言的功能,開發出繪制高緯度的Venn圖流程,使得在該應用層面的繪圖可能性得到擴展。在平時的科研工作中,匯報及寫作以及數據展示能力得到提升,同時也為指導學生論文工作提供了更廣泛的科研工具,可應用在學生論文的插入圖表提供工具支撐。同樣,在其他相關數據領域,對于同類型的數據繪圖具有較好的平移、適應和普適性的應用。
參考文獻
[1] JIA ?A Q,XU ?L,WANG ?Y.Venn Diagrams in Bioinformatics[J].Briefings in Bioinformatics,2021,5(22):108.
[2] 張婷婷,龐雪原,晏佳蕓.Perl語言統計核酸GC含量程序開發[J].科技資訊,2019,17(13):22,24.
[3] 羅紅梅,張永鋒.基于Venn方法與ArgGis的水上交通安全隱患點風險等級初步研究[J].科技資訊,2018,16(21):118-121,123.
[4] 馬玉芬. 韋恩圖在高中生物學教學中的應用研究[D].貴陽:貴州師范大學,2020.
[5] 郭丹丹,邰楊芳.基于韋恩圖的國內圖書情報領域智庫研究主題演化分析[J].晉圖學刊,2021(4):8-15.
[6] 潘博.SVG圖形在Web設計中的應用研究[J].科學技術創新,2020(15):88-89.
作者簡介:金會會(1990—),男,碩士,助教,研究方向為生物信息學。