<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gnuplot on Wind's Letter</title><link>https://windsletter.com/tags/gnuplot/</link><description>Recent content in Gnuplot on Wind's Letter</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Fri, 29 May 2026 16:19:48 +0900</lastBuildDate><atom:link href="https://windsletter.com/tags/gnuplot/index.xml" rel="self" type="application/rss+xml"/><item><title>Gnuplotで高解像度のグラフを作る</title><link>https://windsletter.com/posts/5th/</link><pubDate>Fri, 29 May 2026 16:19:48 +0900</pubDate><guid>https://windsletter.com/posts/5th/</guid><description>&lt;p&gt;5月は色々タスクが多かった．中旬に人生で初めてコロナ&lt;em&gt;&lt;strong&gt;virus&lt;/strong&gt;&lt;/em&gt;にかかってしまいまして，1週間くらい自宅警備員として働いてました．流行りに乗らないという意味ではかっこいいか(?)&lt;/p&gt;
&lt;p&gt; &lt;br&gt;
今回はグラフ描画ソフトであるGnuplotの話です．&lt;/p&gt;
&lt;p&gt;Gnuplotでグラフを作る際，ラスター形式(PNG, JPG&amp;hellip;)で出力すると解像度が低くて困ることがあると思います．例を示した方が早いので，とりあえず適当に三角関数を描画してみましょうか．本記事ではpngcairoしか紹介しないので悪しからず．&lt;/p&gt;
&lt;h3 id="実行環境"&gt;実行環境&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;WSL2 (Ubuntu 24.04.3 LTS)&lt;/li&gt;
&lt;li&gt;Gnuplot (Version 6.0 patchlevel 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下のスクリプト&lt;code&gt;sinx_1.plt&lt;/code&gt;はGnuplotのterminalをpngcairoに設定し，640×480の解像度でPNG画像を出力します．&lt;/p&gt;



&lt;details class="collapsable-code" open&gt;
 &lt;summary title="Click to interact"&gt;&lt;span class="collapsable-code__title"&gt;sinx_1.plt&lt;/span&gt;&lt;/summary&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gnuplot" data-lang="gnuplot"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;reset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="nf"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;terminal&lt;/span&gt; &lt;span class="n"&gt;pngcairo&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;480&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;out&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;out1.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;replot&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;

&lt;p&gt;出力される画像(out1.png)がこちら&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://windsletter.com/images/out1.png"
 alt="out1.png" width="400px"&gt;
&lt;/figure&gt;

&lt;p&gt;一見これで十分なように見えますが，少し拡大してみると粗が目立ちます．論文など人に見せるグラフであれば，あと一息解像度を高くしたいところです．&lt;/p&gt;
&lt;p&gt;ということで解像度を縦横それぞれ2倍にしましょう．以下のスクリプト&lt;code&gt;sinx_2.plt&lt;/code&gt;は1280×940の解像度で出力します．&lt;/p&gt;



&lt;details class="collapsable-code" open&gt;
 &lt;summary title="Click to interact"&gt;&lt;span class="collapsable-code__title"&gt;sinx_2.plt&lt;/span&gt;&lt;/summary&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gnuplot" data-lang="gnuplot"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;reset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="nf"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;terminal&lt;/span&gt; &lt;span class="n"&gt;pngcairo&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="mi"&gt;1280&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;940&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;out&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;out2.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;replot&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;

&lt;p&gt;出力される画像(out2.png)がこちら&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://windsletter.com/images/out2.png"
 alt="out2.png" width="400px"&gt;
&lt;/figure&gt;

&lt;p&gt;はい，解像度は高くなりましたがコレジャナイ感が…&lt;br&gt;
そうじゃなくて目盛りとかの比率はそのままにして解像度を上げて欲しいんや！&lt;del&gt;matplotlibならそんなの簡単にできるんだよ？このままじゃ皆matplotlib使うようになっちゃうよ？&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;実際は&lt;code&gt;tics&lt;/code&gt;や&lt;code&gt;key&lt;/code&gt;等をいじれば比率はなんとかなるんですが，目的の解像度が変わるたびに毎回調整するのは骨が折れます．&lt;/p&gt;
&lt;p&gt;ということで本題．以下のスクリプト&lt;code&gt;sinx_3.plt&lt;/code&gt;は，&lt;strong&gt;呪文&lt;/strong&gt;を追加することでグラフ内の各要素の比率を保ちながら解像度のみを上げます．このスクリプトではscale=4として，640×470の4倍の解像度である2560×1920で出力しています．&lt;/p&gt;



&lt;details class="collapsable-code" open&gt;
 &lt;summary title="Click to interact"&gt;&lt;span class="collapsable-code__title"&gt;sinx_3.plt&lt;/span&gt;&lt;/summary&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gnuplot" data-lang="gnuplot"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;reset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="nf"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nv"&gt;scale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;terminal&lt;/span&gt; &lt;span class="n"&gt;pngcairo&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;480&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt; &lt;span class="n"&gt;fontscale&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt; &lt;span class="n"&gt;linewidth&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt; &lt;span class="n"&gt;pointscale&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;out&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;out3.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="k"&gt;replot&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;

&lt;p&gt;そして出力される画像(out3.png)がこちら&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://windsletter.com/images/out3.png"
 alt="out3.png" width="400px"&gt;
&lt;/figure&gt;

&lt;p&gt;out1.pngと比較してみると一目瞭然かと思います．細部がくっきりしていますね．追加した呪文は大したものではありませんが，端的に説明すると設定したscale変数に合わせて解像度が高くなるとともに，フォントなどの要素がscale変数の分だけ倍率がかかり大きくなるという内容です．よって実質解像度のみが増加しているという状態．&lt;/p&gt;
&lt;p&gt;これで簡単に高解像度のグラフを作成することができますし，解像度を変更したいときも比率を保ってくれます．なんと便利だ．&lt;/p&gt;
&lt;p&gt;今年で40歳のGnuplotさんは若造のmatplotlibに負けないよう頑張ってください．&lt;/p&gt;
&lt;p&gt;この記事が誰かの役に立てれば幸いです．では今回はこの辺で失礼します.&lt;/p&gt;</description></item></channel></rss>