興許是周五,上午開會约啊,中午飯后沒有太大干活積極性邑遏。到了下午,類似感覺更甚恰矩。索性刷刷文獻记盒,隨后碼碼。
一直以來外傅,不少人吐槽纪吮。
為什么你 TBtools 出圖不能保存,
然后下次打開重新修改萎胰?
Emmm....沒有為什么因為他就是不能碾盟。
邏輯上,我們希望一個圖(其實是一個繪圖項目)能保存當前工作狀態(tài)技竟,下次打開在當前基礎(chǔ)上繼續(xù)修改冰肴。
這個其實挺簡單。對于支持這類保存項目然后支持重載的功能實現(xiàn)榔组,一般有兩種:
- 泛化熙尉,類似用戶喜歡使用 PPT,AI搓扯,PS 等检痰,其實當你仔細去想,就會發(fā)現(xiàn)擅编,一旦泛化攀细,那么其實交互變得非常Simple箫踩,或者說 Naive?單調(diào)。因為充其量谭贪,你就是要么選定一個元件境钟,要么選定幾個元件,要么按照分組俭识,這樣去修改一些元件的特性慨削。本身修改這個動作需要你做當前指定;
- 特異套媚,你可以針對某個圖像類型缚态,開發(fā)特定的參數(shù)。比如大家常用的一些「專門繪制某一類圖」的軟件堤瘤∶德或者更直接的,看看現(xiàn)在 TBtools 的 Heatmap 或 Advanced Circos本辐,你可以保存項目桥帆,下次重載。盡管這個跟專門開發(fā)還是有點距離慎皱,不過也大體可以指代老虫。值得注意的是,適用于 Heatmap 的交互茫多,比如調(diào)整熱階祈匙,改變格子寬度大小等等,不少參數(shù)天揖,其實完全不能應(yīng)用于 Circos 功能夺欲。
當用戶提出希望調(diào)整圖片的繪制參數(shù)時,要的不是“泛化”的實現(xiàn)(這個TBtools很早就支持了)宝剖,要的是“特異”的實現(xiàn)洁闰。這就是問題。因為 TBtools 本身的圖稿輸出万细,用的是我自己開發(fā)的繪圖引擎扑眉,即 JIGplot。
開發(fā)繪圖引擎的目的是為了繪制出具有良好交互性的圖稿赖钞,這其實是“泛化”的過程腰素。而對于“特異”交互的實現(xiàn),則需要針對每一類圖做專門的參數(shù)開發(fā)和優(yōu)化雪营。這其實不是一個好事弓千。因為這樣,每一類圖献起,比如現(xiàn)在熱圖就有熱圖的Project洋访,而 Circos圖就有Circos圖的 Project镣陕,當然,其他圖姻政,如 Gene Location呆抑,也可以會。
而且汁展,還有一個問題鹊碍,其實這些Project本身的交互依賴于專門開發(fā)的界面。
簡單來說食绿,圖片與交互在某種程度來說侈咕,是分割的。而真正優(yōu)秀的圖片器紧,因為是他本身就包含了自身的交互信息耀销。
當然,現(xiàn)在是有的品洛,但這是“泛化”的結(jié)果树姨。大體如下
這個問題并不大,問題最大的在于桥状,當我們保存一張圖片時,我們無法將交互動作跟圖片同時保存硝清。
思來想去辅斟,我大體做了一個實現(xiàn),基本可以實現(xiàn)這個功能芦拿。
大體如下士飒,一張以前一模一樣的圖
而現(xiàn)在增加了一個 Meta Control
在JIGplot里面,可以簡單的針對特定的JIGElement群體賦予動作標簽蔗崎。
簡單來說酵幕,交互動作信息保存在對應(yīng)JIGSubPanel對象中,于是我們從此可以輕松修改圖片的特定信息缓苛,如知簡單增加字體信息芳撒,那么就可以快速批量修改字體等等。做一個簡單的示例未桥。
如果說笔刹,這個比較難理解,那么就可以認為冬耿,
在 TBtools 里面舌菜,以前我們保存圖片,導(dǎo)入后只剩下泛化的交互亦镶,需要專門圈選才能修改某一類元件的屬性日月,如顏色袱瓮,字體等;而現(xiàn)在爱咬,我們保存圖片尺借,導(dǎo)入后,仍然可以通過 Meta Control 一次批量調(diào)整特定元件群組台颠,如所有行名或者列名等等褐望。
Emmm,今天的內(nèi)容串前,可能有點抽象瘫里。
不過 JIGplot 本身就是抽象的結(jié)果。
或許看起來沒什么用荡碾,
但其實用處很大谨读。
很多事情,總是很矛盾坛吁。
正如劳殖,只有當你拿出成果時,別人才可能會去看你的努力拨脉;而很多努力哆姻,其實不會有拿得出手的成果。
于是問題就是玫膀,
你是否愿意做一些不會出成果的努力矛缨,盡管他們會很重要。
這個重要有兩方面:
- 就真的很重要帖旨,堅持到底或許真能出大成果
- 也非常重要箕昭,可能別人以為你在做工具,其實你在做做工具的工具