我想要一些建议:我已经用circos (dna数据)创建了一个图像。我想通过在图的中间绘制一个基因名称来注释这个数据,并用一个箭头来显示第一个基因的起点。(输出文件示例如下:http://www.nature.com/ncomms/2015/150122/ncomms6973/images/ncomms6973-f3.jpg)
这是管道的一部分,因此需要创建数千个图像。这听起来像是基本的功能,但是有没有可用的软件(在开放许可下)来做这件事?
我认为最好的方法是将图像加载到“一些”包中,并使用生成的图像作为画布来绘制其他内容。
有人能就如何做这样的事情给出一些建议吗?我试着用谷歌搜索,但这个问题对谷歌来说似乎太宽泛了。
除了circos之外,我还在使用matplotlib和reportlab,所以我希望其中之一是可行的。
如果这不是一个“纯粹”的编程问题,我能理解(在3..2..1.)
编辑:我想画两样东西。1)图片中心的文字。2)在顶部中间指向右侧的曲线箭头,沿着圆圈。
发布于 2015-07-24 23:24:36
这种图像可以通过创建一个极点子图,然后使用ax.bar方法生成:http://matplotlib.org/examples/pie_and_polar_charts/polar_bar_demo.html
通过调整它,你可以做一些类似的事情:
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在它上面绘制,你只需要小心使用正确的坐标:
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()

发布于 2016-10-27 19:17:35
我喜欢你的“最干净的方式”--最好的方式是:
Circos的输出文件是SVG或png。所以我们选择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了解更多信息。
https://stackoverflow.com/questions/31613404
复制相似问题