
%pip install pycirclize
from pycirclize import Circos
sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
sector.axis(fc="none", ls="dashdot", lw=2, ec="black", alpha=0.5)
sector.text(f"Sector: {sector.name}={sector.size}", size=15)
print(sector)
fig = circos.plotfig()
sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
circos = Circos(sectors, space=5, start=-270, end=30)
for sector in circos.sectors:
sector.axis(fc="none", ls="dashdot", lw=2, ec="black", alpha=0.5)
sector.text(f"Sector: {sector.name}={sector.size}", size=15)
fig = circos.plotfig()
sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
sector.axis(fc="none", ls="dashdot", lw=2, ec="black", alpha=0.5)
sector.text(f"Sector: {sector.name}={sector.size}", size=15)
track1 = sector.add_track((75, 100))
track1.axis(fc="tomato", alpha=0.5)
track1.text(track1.name)
track2 = sector.add_track((45, 70))
track2.axis(fc="cyan", alpha=0.5)
track2.text(track2.name)
track3 = sector.add_track((15, 40))
track3.axis(fc="lime", alpha=0.5)
track3.text(track3.name)
fig = circos.plotfig()
import numpy as np
np.random.seed(0)
sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
sector.text(f"Sector: {sector.name}", r=110, size=15)
x = np.arange(sector.start, sector.end) + 0.5
y = np.random.randint(0, 100, len(x))
line_track = sector.add_track((75, 100), r_pad_ratio=0.1)
line_track.axis()
line_track.xticks_by_interval(1)
line_track.line(x, y)
points_track = sector.add_track((45, 70), r_pad_ratio=0.1)
points_track.axis()
points_track.scatter(x, y)
bar_track = sector.add_track((15, 40), r_pad_ratio=0.1)
bar_track.axis()
bar_track.bar(x, y)
fig = circos.plotfig()
rect_track.size
i * rect_size, i * rect_size + rect_size
from pycirclize import Circos
from pycirclize.utils import ColorCycler
import numpy as np
np.random.seed(0)
ColorCycler.set_cmap("tab10")
sectors = {"A": 200, "B": 140, "C": 160}
sector_colors = {"A": "red", "B": "blue", "C": "green"}
circos = Circos(sectors, space=10, start=90, end=360, endspace=False)
for sector in circos.sectors:
outer_track = sector.add_track((95, 100))
outer_track.text(sector.name, color="white")
outer_track.axis(fc=sector_colors[sector.name])
outer_track.xticks_by_interval(interval=10, label_orientation="vertical")
rect_track = sector.add_track((90, 95))
rect_size = 10
for i in range(int(rect_track.size / rect_size)):
x1, x2 = i * rect_size, i * rect_size + rect_size
rect_track.rect(x1, x2, ec="black", lw=0.5, color=ColorCycler())
rect_track.text(str(i + 1), (x1 + x2) / 2, size=8, color="white")
x = np.arange(1, int(sector.size), 2)
y = np.random.randint(0, 10, len(x))
line_track = sector.add_track((80, 90), r_pad_ratio=0.1)
line_track.axis()
line_track.line(x, y, color="blue")
scatter_track = sector.add_track((70, 80), r_pad_ratio=0.1)
scatter_track.axis()
scatter_track.bar(x, y, width=0.8, color="orange")
bar_track = sector.add_track((60, 70), r_pad_ratio=0.1)
bar_track.axis()
bar_track.scatter(x, y, color="green", s=3)
fill_track = sector.add_track((50, 60), r_pad_ratio=0.1)
fill_track.axis()
fill_track.fill_between(x, y, y2=0, fc="red", ec="black", lw=0.5, alpha=0.5)
line_bar_scatter_track = sector.add_track((40, 50), r_pad_ratio=0.1)
line_bar_scatter_track.axis()
line_bar_scatter_track.line(x, y, color="blue")
line_bar_scatter_track.bar(x, y, width=0.8, color="orange")
line_bar_scatter_track.scatter(x, y, color="green", s=3)
text_common_kws = dict(ha="left", va="center", size=8)
circos.text(" 01. Outer Track", r=97.5, color="black", **text_common_kws)
circos.text(" 02. Rectangle Track", r=92.5, color="grey", **text_common_kws)
circos.text(" 03. Line Track", r=85, color="blue", **text_common_kws)
circos.text(" 04. Bar Track", r=75, color="orange", **text_common_kws)
circos.text(" 05. Scatter Track", r=65, color="green", **text_common_kws)
circos.text(" 06. Fill between Track", r=55, color="red", **text_common_kws)
circos.text(" 07. Line + Bar + Scatter Track", r=45, color="purple", **text_common_kws)
fig = circos.plotfig()
sectors = {"A": 10, "B": 20, "C": 15}
name2color = {"A": "red", "B": "blue", "C": "green"}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
track = sector.add_track((95, 100))
track.axis(fc=name2color[sector.name])
track.text(sector.name, color="white", size=12)
track.xticks_by_interval(1)
circos.link(("A", 0, 1), ("A", 7, 8))
circos.link(("A", 1, 2), ("A", 7, 6))
circos.link(("A", 9, 10), ("B", 4, 3))
circos.link(("B", 5, 7), ("C", 6, 8))
circos.link(("B", 18, 16), ("B", 11, 13))
circos.link(("C", 1, 3), ("B", 2, 0))
circos.link(("C", 11.5, 14), ("A", 4, 3))
fig = circos.plotfig()
from pycirclize import Circos
sectors = {"A": 10, "B": 20, "C": 15}
name2color = {"A": "red", "B": "blue", "C": "green"}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
track = sector.add_track((95, 100))
track.axis(fc=name2color[sector.name])
track.text(sector.name, color="white", size=12)
track.xticks_by_interval(1)
circos.link(("A", 0, 1), ("A", 7, 8))
circos.link(("A", 1, 2), ("A", 7, 6), color="skyblue")
circos.link(("A", 9, 10), ("B", 4, 3), direction=1, color="tomato")
circos.link(("B", 5, 7), ("C", 6, 8), direction=1, ec="black", lw=1, hatch="//")
circos.link(("B", 18, 16), ("B", 11, 13), r1=90, r2=90, color="violet", ec="red", lw=2, ls="dashed")
circos.link(("C", 1, 3), ("B", 2, 0), direction=1, color="limegreen")
circos.link(("C", 11.5, 14), ("A", 4, 3), direction=2, color="chocolate", ec="black", lw=1, ls="dotted")
fig = circos.plotfig()
from pycirclize import Circos
import numpy as np
np.random.seed(0)
sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
circos = Circos(sectors, space=5)
for sector in circos.sectors:
sector.text(f"Sector: {sector.name}", r=110, size=15)
x = np.arange(sector.start, sector.end) + 0.5
y = np.random.randint(0, 100, len(x))
line_track = sector.add_track((80, 100), r_pad_ratio=0.1)
line_track.xticks_by_interval(interval=1)
line_track.axis()
line_track.line(x, y)
points_track = sector.add_track((55, 75), r_pad_ratio=0.1)
points_track.axis()
points_track.scatter(x, y)
bar_track = sector.add_track((30, 50), r_pad_ratio=0.1)
bar_track.axis()
bar_track.bar(x, y)
circos.link(("A", 0, 3), ("B", 15, 12))
circos.link(("B", 0, 3), ("C", 7, 11), color="skyblue")
circos.link(("C", 2, 5), ("E", 15, 12), color="chocolate", direction=1)
circos.link(("D", 3, 5), ("D", 18, 15), color="lime", ec="black", lw=0.5, hatch="//", direction=2)
circos.link(("D", 8, 10), ("E", 2, 8), color="violet", ec="red", lw=1.0, ls="dashed")
fig = circos.plotfig()