<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>tian-fc.log</title>
        <link>https://velog.io/</link>
        <description>Notes from building tools for researchers — scientific figures, diagrams, papers.</description>
        <lastBuildDate>Sun, 04 Oct 2026 16:39:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. tian-fc.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/tian-fc" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Give Every Research Figure a Small Manifest]]></title>
            <link>https://velog.io/@tian-fc/Give-Every-Research-Figure-a-Small-Manifest</link>
            <guid>https://velog.io/@tian-fc/Give-Every-Research-Figure-a-Small-Manifest</guid>
            <pubDate>Sun, 04 Oct 2026 16:39:51 GMT</pubDate>
            <description><![CDATA[<p>By Tian @ FigCanvas</p>
<p>Disclosure: I work on FigCanvas. The manifest below is a suggested workflow, not a report of a measured experiment or a built-in FigCanvas feature.</p>
<p>A research figure is often assembled from several sources: a plot exported by a script, a workflow diagram, a schematic, and a caption in a separate document. File names such as <code>figure_final_v4_revised.png</code> do little to explain how those pieces fit together.</p>
<p>A small manifest can make that relationship explicit. It is a text file kept next to the figure sources. Its job is to identify the inputs and decisions behind one export, so a later revision does not depend on someone&#39;s memory.</p>
<h2 id="start-with-a-panel-map">Start with a panel map</h2>
<p>For each panel, record its letter, purpose, source file, and the condition or analysis version it represents. Use stable paths within the project. Avoid putting confidential data or credentials into a public repository; a local reference is enough when the underlying input cannot be shared.</p>
<p>Here is a fictional example:</p>
<pre><code class="language-json">{
  &quot;figure_id&quot;: &quot;figure_03&quot;,
  &quot;revision&quot;: &quot;r02&quot;,
  &quot;panels&quot;: [
    {
      &quot;label&quot;: &quot;A&quot;,
      &quot;purpose&quot;: &quot;Explain the processing workflow&quot;,
      &quot;source&quot;: &quot;diagrams/workflow.svg&quot;,
      &quot;review_status&quot;: &quot;checked&quot;
    },
    {
      &quot;label&quot;: &quot;B&quot;,
      &quot;purpose&quot;: &quot;Compare the two example conditions&quot;,
      &quot;source&quot;: &quot;plots/comparison.svg&quot;,
      &quot;analysis_ref&quot;: &quot;analysis/comparison_v2.py&quot;,
      &quot;review_status&quot;: &quot;needs_caption_check&quot;
    }
  ],
  &quot;caption&quot;: &quot;captions/figure_03.md&quot;,
  &quot;export&quot;: &quot;exports/figure_03_r02.png&quot;
}</code></pre>
<p>The schema is deliberately small. It names the material needed for review without trying to replace a laboratory&#39;s data-management system. A manifest is also a record of intended provenance, not proof that the referenced analysis was executed correctly.</p>
<h2 id="record-meaning-as-well-as-file-paths">Record meaning as well as file paths</h2>
<p>Add a short note describing shared conventions. For example: circles denote measured samples, dashed arrows denote proposed relationships, and a particular label always refers to the same condition.</p>
<p>These decisions are easy to lose when two people edit different panels. A manifest gives a reviewer somewhere to check the intended meaning before changing a color or symbol. It can also record unresolved questions instead of letting an uncertain relationship look settled in the artwork.</p>
<p>If a generative tool helped create a schematic, keep the relevant prompt and review notes with the sources when appropriate. A prompt alone is not a reproducibility guarantee: model behavior, settings, and subsequent manual edits can change the result. Preserve the actual editable output as well.</p>
<h2 id="make-revisions-explicit">Make revisions explicit</h2>
<p>When a reviewer requests a change, update the source and identify the affected panel in the manifest. Then export the complete figure again and inspect that export. Reusing an old composite after updating one source file can leave the delivered figure out of sync with the project.</p>
<p>For a code-driven plot, a commit identifier or a content checksum can help distinguish revisions. For a manually edited diagram, a versioned source file and a short change note may be more practical. Use the simplest method your collaborators will maintain.</p>
<h2 id="keep-assembly-separate-from-verification">Keep assembly separate from verification</h2>
<p><a href="https://figcanvas.com/">FigCanvas</a> provides a canvas for arranging scientific illustrations, charts, and flowcharts. A manifest can sit alongside that workflow and identify the sources and review decisions that matter to your project; it does not require an integration with the tool.</p>
<p>Before sharing a final figure, check that every panel in the manifest exists in the export, every caption reference points to the intended panel, and every unresolved review item has been addressed. The benefit is a clear handoff: another collaborator can see what changed and where to begin the next revision.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[From a methods paragraph to a clean illustration, without redrawing it twice]]></title>
            <link>https://velog.io/@tian-fc/From-a-methods-paragraph-to-a-clean-illustration-without-redrawing-it-twice</link>
            <guid>https://velog.io/@tian-fc/From-a-methods-paragraph-to-a-clean-illustration-without-redrawing-it-twice</guid>
            <pubDate>Sun, 31 May 2026 02:26:18 GMT</pubDate>
            <description><![CDATA[<p>When a paper gets a methods-heavy section — a multi-step protocol, a signaling cascade, a sample-prep pipeline — a good illustration does more than decorate it. It lets a reader grasp the structure in a glance that three dense paragraphs never deliver.</p>
<p>The problem is the cost. Turning a methods paragraph into a clean figure usually means an afternoon in a vector editor, and then re-doing half of it when a co-author reorders two steps.</p>
<h2 id="the-two-pass-habit-that-helped-me">The two-pass habit that helped me</h2>
<p><strong>Pass one: describe, don&#39;t draw.</strong> I write the illustration out as plain relationships first:</p>
<ul>
<li>sample collected, then lysed</li>
<li>lysate split into two fractions</li>
<li>fraction A goes to sequencing, fraction B to mass spec</li>
<li>both results feed one integrated analysis</li>
</ul>
<p>If I can&#39;t state it cleanly in text, the figure isn&#39;t ready — and that&#39;s a clarity problem in the science, not the drawing.</p>
<p><strong>Pass two: generate, then refine.</strong> I hand that description to an <a href="https://figcanvas.com/tools/scientific-illustration">AI illustration for scientific papers</a> and let it lay out a first draft. The repetitive geometry — boxes, arrows, even spacing — is done before I start, so my time goes into labels, emphasis, and what to leave out.</p>
<h2 id="what-i-still-do-by-hand">What I still do by hand</h2>
<ul>
<li>Decide what <em>not</em> to show. Every extra arrow costs the reader attention.</li>
<li>Keep arrow meaning consistent across panels.</li>
<li>Export vector, so a reviewer&#39;s zoom doesn&#39;t expose a blurry mess.</li>
</ul>
<p>None of this is automatic, and anyone selling one-click publication figures is overselling. But shifting the source of truth from a fragile vector file to a text description means revisions are quick edits, not full rebuilds — and that alone took figures off my list of dreaded final steps.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Why I stopped picking colors by eye for scientific figures]]></title>
            <link>https://velog.io/@tian-fc/Why-I-stopped-picking-colors-by-eye-for-scientific-figures</link>
            <guid>https://velog.io/@tian-fc/Why-I-stopped-picking-colors-by-eye-for-scientific-figures</guid>
            <pubDate>Wed, 27 May 2026 00:37:40 GMT</pubDate>
            <description><![CDATA[<p>Every lab I&#39;ve worked in has at least one &quot;the reviewer hated our colors&quot; story. Usually it isn&#39;t the figure that&#39;s wrong — it&#39;s six categorical series rendered in defaults, two of which are indistinguishable to roughly 8% of male readers, and another two that drop into mud when the journal prints them at 75% width.</p>
<p>For a while I kept fixing this by hand: cycle through the palette picker, eyeball the contrast, send the figure to a friend who has deuteranopia, redo. It worked. It also ate hours per figure, and the colors drifted between panels because I wasn&#39;t being systematic.</p>
<p>This is what I do now, roughly in order of how often I reach for each thing.</p>
<h2 id="start-from-a-colorblind-safe-palette-not-from-what-looks-nice">Start from a colorblind-safe palette, not from &quot;what looks nice&quot;</h2>
<p>The single highest-leverage rule I&#39;ve found: pick the palette <strong>before</strong> I make the figure, not after. And the default I reach for first is Okabe-Ito (the 8-color qualitative palette designed in 2008 specifically for color-vision deficiency). It&#39;s boring. That&#39;s the point — it survives the three things that wreck most figures:</p>
<ul>
<li>printed in grayscale by a reviewer who hates PDFs</li>
<li>viewed on a cheap laptop screen</li>
<li>read by someone with red-green color blindness</li>
</ul>
<p>For continuous data I default to viridis or one of its cousins (magma, cividis). Both are perceptually uniform, both stay legible in grayscale, and both have stopped surprising me — which is exactly what I want from a default.</p>
<h2 id="journal-style-usually-means-a-specific-limited-palette">&quot;Journal style&quot; usually means a specific limited palette</h2>
<p>Nature, Cell, and Science don&#39;t formally publish color guides, but if you scrape figures from accepted papers in each, patterns appear fast. Nature tends toward warm earth tones plus desaturated blues. Cell leans cooler with strong accent reds. Science is the loosest but their methods figures often use a tight 3-4 color set with one bright highlight.</p>
<p>This matters less than the colorblind question, but it matters for first impressions on a senior reviewer who has spent thirty years skimming figures in one journal&#39;s house style. Matching the visual vocabulary is a cheap signal that the paper belongs there.</p>
<h2 id="the-workflow-change-that-actually-saved-time">The workflow change that actually saved time</h2>
<p>I used to copy hex codes around in a notes file. Then I&#39;d forget which palette I used in panel A by the time I was building panel D. Now I just generate the palette once for a figure set and apply it uniformly.</p>
<p>A while back I built a small piece of this into a tool we ship at FigCanvas — a <a href="https://figcanvas.com/tools/scientific-color-palette-generator">publication-ready scientific figures</a> color generator that lets you pick from Okabe-Ito, viridis, and Nature/Science-style sets, preview the palette directly on a sample chart, and apply it to whatever figure you&#39;re editing. Nothing fancy — it just removes the &quot;did I use the same blue in panel C?&quot; question. Most of the value, honestly, is the previews on actual chart shapes (bar, scatter, heatmap, volcano) instead of just swatches floating in space, because palettes that look fine as squares often collapse the moment a small scatter point picks them up.</p>
<h2 id="a-short-checklist-before-i-export-anything">A short checklist before I export anything</h2>
<p>I run through five things now:</p>
<ol>
<li>Did I pick the palette before drawing the figure?</li>
<li>Is the palette colorblind-safe (Okabe-Ito or viridis)?</li>
<li>Does it survive printed in grayscale? (one screenshot, desaturate, look)</li>
<li>Do I have at most 5-6 categories, and is the most important one the most saturated?</li>
<li>Is the same color used for the same variable across every panel of the figure set?</li>
</ol>
<p>That last one is the one I still forget when I&#39;m rushing for a deadline. But every &quot;we redid this figure twice&quot; story I have ends at one of these five.</p>
<h2 id="what-im-not-doing-anymore">What I&#39;m not doing anymore</h2>
<p>I&#39;m not picking colors by eye. I&#39;m not letting matplotlib&#39;s default cycle ship. I&#39;m not improvising a new palette per panel because the data &quot;wanted&quot; it. The constraints are small, the time savings aren&#39;t, and the figures are notably more legible to reviewers.</p>
<p>Color is the part of a figure most authors over-personalize and most reviewers under-articulate complaints about. Pinning it down systematically — palette first, picked from a tested set, applied uniformly — has been one of the highest-ROI workflow changes I&#39;ve made for paper figures this year.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[From methods section to a clean flowchart, in one paste]]></title>
            <link>https://velog.io/@tian-fc/From-methods-section-to-a-clean-flowchart-in-one-paste</link>
            <guid>https://velog.io/@tian-fc/From-methods-section-to-a-clean-flowchart-in-one-paste</guid>
            <pubDate>Tue, 19 May 2026 21:16:06 GMT</pubDate>
            <description><![CDATA[<p>When I&#39;m finishing a paper, my methods section is usually a slab of dense prose: protocols, parameters, conditional branches, sample sizes. Reviewers ask for a flowchart. Editors ask for a CONSORT diagram. I always end up redrawing the same logic by hand in Illustrator at 11pm.</p>
<p>Last week I tried something different. Instead of redrawing, I pasted my methods paragraphs into a tool, hit generate, and let it propose a first-draft flowchart. The output wasn&#39;t perfect — it had to be tightened, two boxes merged, one arrow rerouted — but the structural skeleton was right. About 60% of the work was done before I touched anything.</p>
<p>A few things I noticed that changed how I think about this step.</p>
<h2 id="the-bottleneck-is-parsing-not-drawing">The bottleneck is parsing, not drawing</h2>
<p>When I write a flowchart from scratch, 80% of the time is spent re-reading my own methods paragraph trying to remember the branching logic. The drawing is fast. So the right tool isn&#39;t a better canvas — it&#39;s something that extracts the structure from text first, then hands you something to refine.</p>
<h2 id="editable-output-matters-more-than-pretty-output">Editable output matters more than pretty output</h2>
<p>I have no use for a beautiful PNG I can&#39;t change. The moment my supervisor asks me to swap two steps or relabel a node, I need vector shapes I can grab. Tools that only export raster are dead weight by the time you&#39;re at v3 of a figure.</p>
<h2 id="one-shot-generation-is-a-draft-not-a-deliverable">One-shot generation is a draft, not a deliverable</h2>
<p>Anything you generate from text is a starting point. Plan to spend 10–20 minutes refining: tighten labels, kill redundant arrows, fix orientation. That&#39;s still better than starting from a blank canvas.</p>
<h2 id="the-publication-ready-test">The publication-ready test</h2>
<p>A figure is publication-ready when an editor can drop it into a PDF without complaint. That means four things:</p>
<ul>
<li>vector format (SVG, PDF) — not 72dpi PNG</li>
<li>legible at single-column width</li>
<li>consistent typography across all panels</li>
<li>arrows and shapes that snap to a sensible grid</li>
</ul>
<p>If your tool produces an artifact that fails any of these, you&#39;ll redo the work in Illustrator anyway. Test for these before you commit your workflow to it.</p>
<hr>
<p>The tool I landed on for this step is a <a href="https://figcanvas.com/">methods figure generator</a> built for researchers. You paste the methods text, it returns an editable flowchart, and it exports clean SVG. It&#39;s still rough on long branches (anything with more than eight decision nodes gets messy), but for a CONSORT-style flow or a basic protocol diagram, the first draft is usable enough that the rest is real refinement, not redrawing from scratch.</p>
<p>What I haven&#39;t tested yet: how it handles multi-panel figures where the flowchart is one panel of three or four. That&#39;s next week.</p>
<p>If you have a methods-to-flowchart workflow that doesn&#39;t involve hand-drawing in Illustrator, I&#39;d genuinely like to hear it.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Drafting publication figures: a one-week tool sweep]]></title>
            <link>https://velog.io/@tian-fc/Drafting-publication-figures-a-one-week-tool-sweep</link>
            <guid>https://velog.io/@tian-fc/Drafting-publication-figures-a-one-week-tool-sweep</guid>
            <pubDate>Mon, 18 May 2026 21:49:34 GMT</pubDate>
            <description><![CDATA[<p>Scientific figures eat more of my paper-writing time than any other single task. I spent the last week pulling out tools to see what actually moves the needle and what is just hype.</p>
<h2 id="the-baseline-i-am-benchmarking-against">The baseline I am benchmarking against</h2>
<p>Before any tool changes I time-tracked a single methods figure for a small biophysics paper:</p>
<ul>
<li>18 min sketching on paper</li>
<li>35 min in Illustrator (arrows, labels, grouping, hairlines)</li>
<li>22 min fixing alignment and colour after coauthor feedback</li>
<li>11 min exporting + checking 300 DPI and CMYK behaviour</li>
</ul>
<p>That is ~90 min for <strong>one</strong> panel. A typical paper has 4–6 multi-panel figures. Easy to lose a full week.</p>
<h2 id="what-i-tried-this-week">What I tried this week</h2>
<p>I ran the same methods figure through five tools and graded each on three axes:</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Time to first usable draft</th>
<th>Vector output</th>
<th>Realistic editing afterwards</th>
</tr>
</thead>
<tbody><tr>
<td>Illustrator (control)</td>
<td>90 min</td>
<td>yes</td>
<td>painful but possible</td>
</tr>
<tr>
<td>Inkscape</td>
<td>110 min</td>
<td>yes</td>
<td>clunky but free</td>
</tr>
<tr>
<td>BioRender</td>
<td>25 min</td>
<td>yes (paid)</td>
<td>locked into their library</td>
</tr>
<tr>
<td>ChatGPT image (gpt-image-1)</td>
<td>4 min</td>
<td>no, raster only</td>
<td>impossible — pixel art</td>
</tr>
<tr>
<td>A research-focused <a href="https://figcanvas.com">research figure maker</a> I had not seen before</td>
<td>9 min</td>
<td>yes (SVG)</td>
<td>yes, components are real shapes</td>
</tr>
</tbody></table>
<p>The two that surprised me are the bottom two — and not for the reason you would expect.</p>
<h2 id="why-text-to-image-still-fails-for-scientific-figures">Why text-to-image still fails for scientific figures</h2>
<p>Image diffusion models are great for vibes, terrible for figures. I asked gpt-image-1 for &quot;a methods schematic showing a microfluidic chip with three inlet channels feeding into a serpentine mixer, then into a detection chamber with a fluorescence probe&quot;. What I got:</p>
<ul>
<li>vaguely chip-shaped pixels</li>
<li>three things that look like channels but two are connected wrong</li>
<li>text labels that are unreadable hallucinations like &quot;Inllt&quot; and &quot;Detctn Chambr&quot;</li>
<li>nothing is editable; it is one PNG</li>
</ul>
<p>That last point kills it for academic use. Reviewers ask for changes. If your figure is a raster you cannot re-label, you have to redraw.</p>
<h2 id="what-worked-for-me">What worked for me</h2>
<p>The thing that actually saved time was treating figure generation as a <strong>vector composition problem</strong>, not an image problem. The tool I linked above takes a prose description and emits structured SVG where each domain element (channel, inlet, label, scalebar) is a real grouped object you can edit afterwards. Same prompt as above, output was a clean 4-component schematic in ~9 minutes, fully editable in Illustrator or Inkscape afterwards.</p>
<p>This is the workflow I converged on:</p>
<ol>
<li>Write the figure caption first, in prose, the way I would in the paper.</li>
<li>Feed that caption into the figure tool.</li>
<li>Open the SVG in Illustrator only to nudge layout and fix the parts where the model misunderstood domain conventions.</li>
<li>Export at 300 DPI.</li>
</ol>
<p>Step 3 is still ~20 min of manual work but the <strong>starting point</strong> is the difference. Going from blank canvas to &quot;almost right schematic with editable components&quot; in under 10 minutes is a structural change to my paper workflow.</p>
<h2 id="what-i-would-not-use-it-for">What I would not use it for</h2>
<ul>
<li>Photorealistic biology illustrations — BioRender is still better for tissue-level art</li>
<li>Network/graph layouts with thousands of nodes — Gephi or Cytoscape territory</li>
<li>Anything where domain-specific notation matters (e.g. circuit schematics — KiCad, music notation — Lilypond)</li>
</ul>
<h2 id="what-i-am-tracking-next-week">What I am tracking next week</h2>
<p>I want to see whether the same approach holds for two harder cases:</p>
<ul>
<li><strong>Multi-panel figures</strong> with shared legends across 3+ subplots (a/b/c style)</li>
<li><strong>Methods schematics with quantitative inputs</strong>, like dose-response curves embedded inside a schematic</li>
</ul>
<p>If either of those holds, I think a non-trivial chunk of methods-section figure work is just... gone. Will report back.</p>
<hr>
<p>If you have a figure workflow that already works for you, I would love to hear it. Especially: how do you handle round 2 of reviewer feedback when the senior author wants to &quot;just move the arrow&quot;?</p>
]]></description>
        </item>
    </channel>
</rss>