diff --git a/paper/pnas/figs/fig1b.pdf b/paper/pnas/figs/fig1b.pdf index ab6b04b..0791d85 100644 Binary files a/paper/pnas/figs/fig1b.pdf and b/paper/pnas/figs/fig1b.pdf differ diff --git a/paper/pnas/main.pdf b/paper/pnas/main.pdf index b9901a9..efe11ed 100644 Binary files a/paper/pnas/main.pdf and b/paper/pnas/main.pdf differ diff --git a/paper/pnas/make_figs.py b/paper/pnas/make_figs.py index efd2f1a..caa8cec 100644 --- a/paper/pnas/make_figs.py +++ b/paper/pnas/make_figs.py @@ -179,7 +179,7 @@ def _robot(ax, x, y, fc="#e8eef5", dots=(), lost=(), w=0.52, h=0.52): def fig1b(): from matplotlib.patches import Circle, FancyArrowPatch - W, H = 11.4, 4.5 + W, H = 11.4, 4.75 fig, ax = plt.subplots(figsize=(W, H)) ax.set_xlim(0, W) ax.set_ylim(0, H) @@ -192,7 +192,7 @@ def fig1b(): lw=lw, linestyle=ls, shrinkA=shrink, shrinkB=shrink)) # ---------------- left: a society in space (contemporaries exchanging messages) - cx, cy, r = 2.45, 2.70, 0.95 + cx, cy, r = 2.45, 2.95, 0.95 dotsets = [(BLUE, GOLD), (GREEN,), (BLUE, GREEN), (GOLD, GREEN), (BLUE,)] pos = [] for i, ds in enumerate(dotsets): @@ -204,45 +204,47 @@ def fig1b(): arrow(pos[i], pos[j2], color="#99a", lw=0.9, style="<|-|>", shrink=26, ls=(0, (4, 2))) ax.text(pos[0][0] + 0.72, pos[0][1] + 0.38, "hi!", fontsize=8, ha="center", bbox=dict(boxstyle="round,pad=0.25", fc="white", ec="#99a", lw=0.8)) - clk = (0.55, 4.08) + clk = (0.55, 4.33) ax.add_patch(Circle(clk, 0.21, fc="white", ec="#445", lw=1.1)) ax.plot([clk[0], clk[0]], [clk[1], clk[1] + 0.13], color="#445", lw=1.0) ax.plot([clk[0], clk[0] + 0.10], [clk[1], clk[1]], color="#445", lw=1.0) ax.text(clk[0], clk[1] - 0.34, "one moment", ha="center", fontsize=7, style="italic", color="#555") - ax.text(2.45, 0.55, "a society in space", ha="center", fontsize=11, fontweight="bold") - ax.text(2.45, 0.24, "contemporaries exchanging messages \u2014 multi-agent systems, agent economies", - ha="center", fontsize=7.5, style="italic", color="#555") + ax.text(2.45, 0.80, "a society in space", ha="center", fontsize=11, fontweight="bold") + ax.text(2.45, 0.50, "contemporaries exchanging messages \u2014 multi-agent systems, agent economies", + ha="center", fontsize=7.2, style="italic", color="#555") + ax.text(2.45, 0.24, "information is passed on, but not easily stored: it fades with the conversation", + ha="center", fontsize=7.2, style="italic", color="#555") # ---------------- middle: the shift of perspective - arrow((4.60, 2.50), (5.95, 2.50), color="#445", lw=2.0, style="-|>") - ax.text(5.27, 2.66, "the same ecosystem,\nseen along its time axis", ha="center", + arrow((4.60, 2.75), (5.95, 2.75), color="#445", lw=2.0, style="-|>") + ax.text(5.27, 2.91, "the same ecosystem,\nseen along its time axis", ha="center", va="bottom", fontsize=8, style="italic", color="#334", linespacing=1.3) # ---------------- right: a society in time (a pedigree) axx = 6.8 - arrow((axx, 4.30), (axx, 1.00), color="#445", lw=1.3) - for gy, lab in [(3.80, "gen 0"), (2.55, "gen 1"), (1.35, "gen 2")]: + arrow((axx, 4.55), (axx, 1.25), color="#445", lw=1.3) + for gy, lab in [(4.05, "gen 0"), (2.80, "gen 1"), (1.60, "gen 2")]: ax.text(axx - 0.12, gy, lab, ha="right", va="center", fontsize=7.5, color="#445") - p1, p2 = (8.0, 3.80), (9.5, 3.80) - c1, c2 = (7.5, 2.55), (9.0, 2.55) - g2 = (9.0, 1.35) + p1, p2 = (8.0, 4.05), (9.5, 4.05) + c1, c2 = (7.5, 2.80), (9.0, 2.80) + g2 = (9.0, 1.60) _robot(ax, *p1, dots=(BLUE, GOLD)) _robot(ax, *p2, dots=(GREEN, BLUE)) _robot(ax, *c1, dots=(BLUE,), lost=(GOLD,)) _robot(ax, *c2, dots=(BLUE, GREEN, GOLD)) _robot(ax, *g2, dots=(BLUE, GREEN, GOLD)) - arrow((7.87, 3.26), (7.56, 3.04), color="#666") - ax.text(7.42, 3.16, "inherit", ha="right", fontsize=7, style="italic", color="#555") - arrow((8.15, 3.24), (8.85, 3.04), color="#666") - arrow((9.40, 3.24), (9.13, 3.04), color="#666") - ax.text(9.0, 3.14, "merge (sex)", ha="center", fontsize=7, style="italic", color="#555", + arrow((7.87, 3.51), (7.56, 3.29), color="#666") + ax.text(7.42, 3.41, "inherit", ha="right", fontsize=7, style="italic", color="#555") + arrow((8.15, 3.49), (8.85, 3.29), color="#666") + arrow((9.40, 3.49), (9.13, 3.29), color="#666") + ax.text(9.0, 3.39, "merge (sex)", ha="center", fontsize=7, style="italic", color="#555", bbox=dict(boxstyle="round,pad=0.12", fc="white", ec="none")) - ax.text(7.5, 1.83, "rare skill lost", ha="center", fontsize=6.8, style="italic", + ax.text(7.5, 2.08, "rare skill lost", ha="center", fontsize=6.8, style="italic", color="#a33") - arrow((9.0, 1.99), (9.0, 1.81), color="#666") - globe = (10.55, 1.85) + arrow((9.0, 2.24), (9.0, 2.06), color="#666") + globe = (10.55, 2.10) ax.add_patch(Circle(globe, 0.32, fc="#eaf4fb", ec="#2c7fb8", lw=1.2)) from matplotlib.patches import Arc as _Arc ax.add_patch(_Arc(globe, 0.32, 0.64, theta1=90, theta2=270, ec="#2c7fb8", lw=0.8)) @@ -250,12 +252,13 @@ def fig1b(): ax.plot([globe[0] - 0.32, globe[0] + 0.32], [globe[1], globe[1]], color="#2c7fb8", lw=0.8) ax.text(globe[0], globe[1] - 0.44, "reality\n(verifier)", ha="center", va="top", fontsize=7, color="#2c7fb8", linespacing=1.2) - arrow((10.22, 1.70), (9.38, 1.45), color="#2c7fb8", lw=1.2) - ax.text(9.82, 1.78, "ground\n(immigrate)", ha="center", va="bottom", fontsize=7, + arrow((10.22, 1.95), (9.38, 1.70), color="#2c7fb8", lw=1.2) + ax.text(9.82, 2.03, "ground\n(immigrate)", ha="center", va="bottom", fontsize=7, style="italic", color="#2c7fb8", linespacing=1.2) - ax.text(8.9, 0.55, "a society in time", ha="center", fontsize=11, fontweight="bold") - ax.text(8.9, 0.24, "generations coupled by inheritance, recombination, grounding \u2014 " - "where population genetics applies", + ax.text(8.9, 0.80, "a society in time", ha="center", fontsize=11, fontweight="bold") + ax.text(8.9, 0.50, "information is inherited, evolutionarily selected, and passed on again \u2014", + ha="center", fontsize=7.2, style="italic", color="#555") + ax.text(8.9, 0.24, "from parent model to child model \u2014 where population genetics applies", ha="center", fontsize=7.2, style="italic", color="#555") save(fig, "fig1b")