<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Chart on Tarragon</title><link>https://tarrragon.github.io/blog/tags/chart/</link><description>Recent content in Chart on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Mon, 15 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/chart/index.xml" rel="self" type="application/rss+xml"/><item><title>終端機文字圖表：gnuplot、termgraph、plotext 與 sparkline</title><link>https://tarrragon.github.io/blog/linux/tools/cli/ascii-charts-in-terminal/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/linux/tools/cli/ascii-charts-in-terminal/</guid><description>&lt;p>終端機文字圖表工具是把一串數值畫成終端機裡由字元構成的圖的一類程式，承擔的責任是讓趨勢與分布可視化，而不必把資料拉回本機開試算表。在遠端情境下，它的優勢是一次性輸出、不持續重畫，所以對頻寬最友善 — 跑一次印出結果就結束，不像全螢幕 TUI 會持續佔用連線。&lt;/p>
&lt;p>這類工具與 TUI 監控的分工很清楚：TUI 監控自己去抓系統即時狀態並持續刷新，文字圖表則是餵什麼畫什麼，適合畫已經到手的數值（log 抽出的延遲、監控匯出的指標、一個查詢的結果）。本文承接 &lt;a href="https://tarrragon.github.io/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽&lt;/a> 的文字圖表分類。&lt;/p>
&lt;h2 id="gnuplot通用繪圖的-ascii-後端">gnuplot：通用繪圖的 ASCII 後端&lt;/h2>
&lt;p>gnuplot 是老牌繪圖工具，設定 &lt;code>set terminal dumb&lt;/code> 就改用 ASCII 字元輸出，責任是把函數或時間序列畫成終端機可讀的折線圖。它不需要圖形環境，在純 SSH 下直接可用。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">gnuplot -e &lt;span class="s2">&amp;#34;set terminal dumb size 80,25; plot sin(x)&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>畫資料檔時把 &lt;code>plot&lt;/code> 指向檔案，例如 &lt;code>plot 'data.dat' using 1:2 with lines&lt;/code>。gnuplot 的適用情境是需要正式座標軸、多條曲線疊圖、或畫數學函數時 — 它的表達力最完整，代價是設定語法較多。&lt;/p>
&lt;h2 id="termgraph分類長條圖">termgraph：分類長條圖&lt;/h2>
&lt;p>termgraph 吃一份「標籤加數值」的資料就畫出橫向長條圖，責任是讓各分類的佔比一眼可比。它用 &lt;code>pip install termgraph&lt;/code> 安裝，適合看「哪一類佔最多」這種分布問題。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="nb">printf&lt;/span> &lt;span class="s2">&amp;#34;Mon 120\nTue 250\nWed 90\n&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> termgraph&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>每一行是一個分類與其數值，termgraph 把數值換算成等比例的長條。它的定位是快速看分布，不追求座標軸的精確 — 想看的是相對大小而非絕對讀數時最合適。&lt;/p>
&lt;h2 id="plotext腳本內繪圖">plotext：腳本內繪圖&lt;/h2>
&lt;p>plotext 是 Python 函式庫，讓折線、散點、長條圖直接在腳本裡畫出來，責任是把繪圖接在資料處理流程後面。它用 &lt;code>pip install plotext&lt;/code> 安裝，適合在既有的 Python 資料處理腳本末端加一段視覺化。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">plotext&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">9&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;延遲趨勢&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>plotext 的優勢是與資料處理同在一個腳本、不必把資料另存再餵給外部工具。處理完數據順手畫一張圖確認形狀，是它最自然的用法。&lt;/p>
&lt;h2 id="sparkline-與-pipeline-即時更新">sparkline 與 pipeline 即時更新&lt;/h2>
&lt;p>sparkline 工具把一串數字壓成一行高低起伏的點陣，責任是用最小的版面塞進一條趨勢。它不畫座標軸，只呈現形狀，適合放進狀態列、log 或窄螢幕。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">spark &lt;span class="m">1&lt;/span> &lt;span class="m">5&lt;/span> &lt;span class="m">3&lt;/span> &lt;span class="m">8&lt;/span> &lt;span class="m">2&lt;/span> &lt;span class="m">9&lt;/span> &lt;span class="m">4&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>需要從 pipeline 即時吃資料時，&lt;code>youplot&lt;/code>（指令名 &lt;code>uplot&lt;/code>）能接管線畫圖，配合 &lt;code>tail -f&lt;/code> 做出滾動更新的監控線：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">tail -f metrics.log &lt;span class="p">|&lt;/span> uplot line&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>sparkline 在窄螢幕（手機、平板遠端）特別有優勢，因為一行不管螢幕多窄都塞得下。低頻率印一條 sparkline 來持續觀察某個指標，比開全螢幕儀表板省頻寬得多。&lt;/p>
&lt;h2 id="遠端使用判讀">遠端使用判讀&lt;/h2>
&lt;p>文字圖表在遠端的核心優勢是輸出模式：一次性印出、不持續重畫，所以不像全螢幕 TUI 那樣持續佔用頻寬。判讀分界落在資料來源與互動需求 — 手上已有數值、只想看形狀，用文字圖表；需要系統即時狀態並隨時操作，用 TUI 監控（見 &lt;a href="https://tarrragon.github.io/blog/linux/tools/cli/tui-monitoring-tools/" data-link-title="TUI 監控工具：btop、htop、k9s 的遠端使用與刷新率調校" data-link-desc="全螢幕 TUI 監控工具在遠端 SSH 情境的使用：htop 進程操作、btop 多資源儀表板、k9s 管 Kubernetes，以及慢速連線下刷新率與頻寬的取捨。">TUI 監控工具&lt;/a>）。&lt;/p>
&lt;p>慢速連線下做持續監控時，「每隔較長間隔印一次 sparkline 或長條圖」比全螢幕儀表板省頻寬：一行 sparkline 的傳輸量是固定的幾十個位元組，全螢幕儀表板則每次重送整片畫面（含 ANSI 色碼常達數 KB），兩者差一到兩個量級。&lt;/p>
&lt;h2 id="下一步路由">下一步路由&lt;/h2>
&lt;ul>
&lt;li>需要即時系統狀態而非一次性圖表：&lt;a href="https://tarrragon.github.io/blog/linux/tools/cli/tui-monitoring-tools/" data-link-title="TUI 監控工具：btop、htop、k9s 的遠端使用與刷新率調校" data-link-desc="全螢幕 TUI 監控工具在遠端 SSH 情境的使用：htop 進程操作、btop 多資源儀表板、k9s 管 Kubernetes，以及慢速連線下刷新率與頻寬的取捨。">TUI 監控工具&lt;/a>。&lt;/li>
&lt;li>把監控與繪圖擺進可持久化的多工器：&lt;a href="https://tarrragon.github.io/blog/linux/tools/cli/tmux-persistence-and-basics/" data-link-title="tmux 基礎：遠端 session 持久化與基本操作" data-link-desc="tmux 終端機多工器的遠端使用核心：detach/reattach 讓 session 脫離連線生命週期、prefix key 與 window/pane 操作、手機友善的快捷鍵調校，以及 tmux 與 zellij 的選型對照。">tmux 基礎&lt;/a>。&lt;/li>
&lt;li>文字圖表在整個遠端工具選型中的位置：&lt;a href="https://tarrragon.github.io/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>終端機文字圖表工具是把一串數值畫成終端機裡由字元構成的圖的一類程式，承擔的責任是讓趨勢與分布可視化，而不必把資料拉回本機開試算表。在遠端情境下，它的優勢是一次性輸出、不持續重畫，所以對頻寬最友善 — 跑一次印出結果就結束，不像全螢幕 TUI 會持續佔用連線。</p>
<p>這類工具與 TUI 監控的分工很清楚：TUI 監控自己去抓系統即時狀態並持續刷新，文字圖表則是餵什麼畫什麼，適合畫已經到手的數值（log 抽出的延遲、監控匯出的指標、一個查詢的結果）。本文承接 <a href="/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽</a> 的文字圖表分類。</p>
<h2 id="gnuplot通用繪圖的-ascii-後端">gnuplot：通用繪圖的 ASCII 後端</h2>
<p>gnuplot 是老牌繪圖工具，設定 <code>set terminal dumb</code> 就改用 ASCII 字元輸出，責任是把函數或時間序列畫成終端機可讀的折線圖。它不需要圖形環境，在純 SSH 下直接可用。</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">gnuplot -e <span class="s2">&#34;set terminal dumb size 80,25; plot sin(x)&#34;</span></span></span></code></pre></div><p>畫資料檔時把 <code>plot</code> 指向檔案，例如 <code>plot 'data.dat' using 1:2 with lines</code>。gnuplot 的適用情境是需要正式座標軸、多條曲線疊圖、或畫數學函數時 — 它的表達力最完整，代價是設定語法較多。</p>
<h2 id="termgraph分類長條圖">termgraph：分類長條圖</h2>
<p>termgraph 吃一份「標籤加數值」的資料就畫出橫向長條圖，責任是讓各分類的佔比一眼可比。它用 <code>pip install termgraph</code> 安裝，適合看「哪一類佔最多」這種分布問題。</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">printf</span> <span class="s2">&#34;Mon 120\nTue 250\nWed 90\n&#34;</span> <span class="p">|</span> termgraph</span></span></code></pre></div><p>每一行是一個分類與其數值，termgraph 把數值換算成等比例的長條。它的定位是快速看分布，不追求座標軸的精確 — 想看的是相對大小而非絕對讀數時最合適。</p>
<h2 id="plotext腳本內繪圖">plotext：腳本內繪圖</h2>
<p>plotext 是 Python 函式庫，讓折線、散點、長條圖直接在腳本裡畫出來，責任是把繪圖接在資料處理流程後面。它用 <code>pip install plotext</code> 安裝，適合在既有的 Python 資料處理腳本末端加一段視覺化。</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="kn">import</span> <span class="nn">plotext</span> <span class="k">as</span> <span class="nn">plt</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">6</span><span class="p">])</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&#34;延遲趨勢&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></span></span></code></pre></div><p>plotext 的優勢是與資料處理同在一個腳本、不必把資料另存再餵給外部工具。處理完數據順手畫一張圖確認形狀，是它最自然的用法。</p>
<h2 id="sparkline-與-pipeline-即時更新">sparkline 與 pipeline 即時更新</h2>
<p>sparkline 工具把一串數字壓成一行高低起伏的點陣，責任是用最小的版面塞進一條趨勢。它不畫座標軸，只呈現形狀，適合放進狀態列、log 或窄螢幕。</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">spark <span class="m">1</span> <span class="m">5</span> <span class="m">3</span> <span class="m">8</span> <span class="m">2</span> <span class="m">9</span> <span class="m">4</span></span></span></code></pre></div><p>需要從 pipeline 即時吃資料時，<code>youplot</code>（指令名 <code>uplot</code>）能接管線畫圖，配合 <code>tail -f</code> 做出滾動更新的監控線：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">tail -f metrics.log <span class="p">|</span> uplot line</span></span></code></pre></div><p>sparkline 在窄螢幕（手機、平板遠端）特別有優勢，因為一行不管螢幕多窄都塞得下。低頻率印一條 sparkline 來持續觀察某個指標，比開全螢幕儀表板省頻寬得多。</p>
<h2 id="遠端使用判讀">遠端使用判讀</h2>
<p>文字圖表在遠端的核心優勢是輸出模式：一次性印出、不持續重畫，所以不像全螢幕 TUI 那樣持續佔用頻寬。判讀分界落在資料來源與互動需求 — 手上已有數值、只想看形狀，用文字圖表；需要系統即時狀態並隨時操作，用 TUI 監控（見 <a href="/blog/linux/tools/cli/tui-monitoring-tools/" data-link-title="TUI 監控工具：btop、htop、k9s 的遠端使用與刷新率調校" data-link-desc="全螢幕 TUI 監控工具在遠端 SSH 情境的使用：htop 進程操作、btop 多資源儀表板、k9s 管 Kubernetes，以及慢速連線下刷新率與頻寬的取捨。">TUI 監控工具</a>）。</p>
<p>慢速連線下做持續監控時，「每隔較長間隔印一次 sparkline 或長條圖」比全螢幕儀表板省頻寬：一行 sparkline 的傳輸量是固定的幾十個位元組，全螢幕儀表板則每次重送整片畫面（含 ANSI 色碼常達數 KB），兩者差一到兩個量級。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>需要即時系統狀態而非一次性圖表：<a href="/blog/linux/tools/cli/tui-monitoring-tools/" data-link-title="TUI 監控工具：btop、htop、k9s 的遠端使用與刷新率調校" data-link-desc="全螢幕 TUI 監控工具在遠端 SSH 情境的使用：htop 進程操作、btop 多資源儀表板、k9s 管 Kubernetes，以及慢速連線下刷新率與頻寬的取捨。">TUI 監控工具</a>。</li>
<li>把監控與繪圖擺進可持久化的多工器：<a href="/blog/linux/tools/cli/tmux-persistence-and-basics/" data-link-title="tmux 基礎：遠端 session 持久化與基本操作" data-link-desc="tmux 終端機多工器的遠端使用核心：detach/reattach 讓 session 脫離連線生命週期、prefix key 與 window/pane 操作、手機友善的快捷鍵調校，以及 tmux 與 zellij 的選型對照。">tmux 基礎</a>。</li>
<li>文字圖表在整個遠端工具選型中的位置：<a href="/blog/linux/tools/cli/cli-graphical-tools-overview/" data-link-title="終端機圖形化工具總覽：遠端操作下的 TUI、文字圖表與多工器" data-link-desc="在純文字終端機裡用 ASCII 與製圖字元做出監控儀表板、資料圖表與多視窗操作的工具總覽，並針對 SSH 伺服器、手機平板、低頻寬三種遠端情境給出選型判讀。">終端機圖形化工具總覽</a>。</li>
</ul>
]]></content:encoded></item></channel></rss>