首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改circos图像的最简洁方法

修改circos图像的最简洁方法
EN

Stack Overflow用户
提问于 2015-07-24 22:40:38
回答 2查看 415关注 0票数 1

我想要一些建议:我已经用circos (dna数据)创建了一个图像。我想通过在图的中间绘制一个基因名称来注释这个数据,并用一个箭头来显示第一个基因的起点。(输出文件示例如下:http://www.nature.com/ncomms/2015/150122/ncomms6973/images/ncomms6973-f3.jpg)

这是管道的一部分,因此需要创建数千个图像。这听起来像是基本的功能,但是有没有可用的软件(在开放许可下)来做这件事?

我认为最好的方法是将图像加载到“一些”包中,并使用生成的图像作为画布来绘制其他内容。

有人能就如何做这样的事情给出一些建议吗?我试着用谷歌搜索,但这个问题对谷歌来说似乎太宽泛了。

除了circos之外,我还在使用matplotlib和reportlab,所以我希望其中之一是可行的。

如果这不是一个“纯粹”的编程问题,我能理解(在3..2..1.)

编辑:我想画两样东西。1)图片中心的文字。2)在顶部中间指向右侧的曲线箭头,沿着圆圈。

EN

回答 2

Stack Overflow用户

发布于 2015-07-24 23:24:36

这种图像可以通过创建一个极点子图,然后使用ax.bar方法生成:http://matplotlib.org/examples/pie_and_polar_charts/polar_bar_demo.html

通过调整它,你可以做一些类似的事情:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt


N = 40
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = np.random.uniform(-20,20,N)
width = 2*np.pi / N

ax = plt.subplot(111, polar=True)
ax.grid(False)
bars1 = ax.bar(theta, radii, width=width, bottom=40.0) 
bars2 = ax.bar(theta, radii, width=width, bottom=100.0)


# Use custom colors and opacity
for r, bar in zip(radii, bars1):
    bar.set_facecolor( 'r' if r>0 else 'g' )
    bar.set_alpha(0.5)

plt.show()

fig.savefig("figure_1.png")

在matplotlib库中提供了许多示例:http://matplotlib.org/gallery.html

现在,如果你真的有那么多复杂的图像,那么matplotlib可能会很困难,因为它并没有真正优化来进行快速的图形计算。

但是你已经保存了这些图像,你可以加载它们并处理它们。这可能确实会更快:

例如,我将前面的文件保存为png,然后我可以用scipy.misc.imread加载它(请注意,这可以与任何jpeg/png/等一起工作。图像,即使不是从matplotlib生成的),用imshow绘制它,然后用通常的plot在它上面绘制,你只需要小心使用正确的坐标:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
import scipy.misc

fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid(False)
img = scipy.misc.imread("figure_1.png")
ax.imshow(img)

ax.plot([400,500],[300,200],'k', linewidth=4)

plt.show()

票数 2
EN

Stack Overflow用户

发布于 2016-10-27 19:17:35

我喜欢你的“最干净的方式”--最好的方式是:

  • 自己修改SVG文件

Circos的输出文件是SVG或png。所以我们选择SVG。

  1. 在中间添加文本:只需在svg文件中添加文本标签,如下所示:

<text x="1500" y="1500">Here is your text in center</text>

按路径和文本路径绘制

路径是svg的一个很强的特性。您可以访问https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath了解更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31613404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档