写在前面
事实上,做这个坐标系转换。
目前来说,我唯一的目的是JIGCircos。主要原因是Circos,对于部分人来说:
- 安装太麻烦(当然有人说用conda)
- 绘制太麻烦,当然目前有不少网站,但有时候,我们只是要简单的绘制一些还不错的图片
这个想法产生了很久,目前也有阶段性成果。但整体还是不够优秀。JIGplot在这类坐标系转换上,一直是我不想做的事情。
主要原因不是转不好。正如之前的推文,效果还可以。
But,最麻烦的其实是文本坐标。
一些尝试
以面板底部为极,进行转换
可以看得出来,标签可以已经较好的处理
测试之后,发现,由于前期JIGplot在文本旋转上还是花了一定功夫,似乎都没问题,不过这个错位,不知道是哪里引起的
subPanel.flip(JIGConstants.Direction.Up, JIGConstants.Direction.Left);
subPanel.polar(JIGConstants.Direction.Left, startAngle, endAngle);
但是在工具测试的时候,并没有发现存在这个问题。
总的来说,最后是调整完善,同时也完成了极坐标下文本堆叠的处理。(目前在考虑,是否要分染色体?毕竟不同染色体的ID也可能出现重叠?)
我收回很久以前说ggplot2或者图层语法无法实现极坐标下文本重叠的情况,这几天把之前不小心想到的解决办法用JIGplot实现了下,很明显,图层语法是可以比较方便的搞定的。只要在笛卡尔坐标系里面先做一次堆叠处理(给一个权重,需要具体调整或者按最终圈大小来计算),最后再做一次coord_polar()
写在后面
需求推动工具的发展,因为要实现极坐标下的文本堆叠处理,我对绘图引擎做了一定的优化:
- 增加flip功能,见之前的推文
- 调整了link point的设置
- 以及很多....
终于还是让我实现了。
一旦实现了这个,Circos类似的图片,似乎已经没有实现难点了?需要的只是一些简单绘图引擎优化。