ラベル gnuplot の投稿を表示しています。 すべての投稿を表示
ラベル gnuplot の投稿を表示しています。 すべての投稿を表示

2024年6月3日月曜日

Linux Mint 21.2 に Gnuplot をソースから入れる

Tgif でグラフをお絵かきする古い人間なので, Linux Mint 21.2 に Gnuplot をソースから入れます.CentOS の時より変に苦労した.

オチ:
 

やった手順.ボスに絵日記と言われるやつ.
Gnuplot を SourceForge からダウンロードして解凍
https://sourceforge.net/projects/gnuplot/files/gnuplot/

 
このまま Make すると
 
で死ぬ../configure --with-qt=qt5してみたけれど単体では効果無し(そりゃそうだ)

qtbase5-dev を入れるといいらしい.
 

したら Make は通るけれど Make Installでだめ
 
調べたら,QT5のバージョン依存なので以下を入れろというアドバイスがあった.
qttools5-dev-tools libdtkwidget-dev libdtkwm-dev pkg-config

実際には qttools5-dev-tools だけ入れたら動いた.
 
libdtkwidget-dev libdtkwm-dev は apt に無かった.pkg-config は入れなくても通った.


GUI が QT になったのかね.ソースから入れると /usr/local/bin に入るのね.

だめだったアドバイス.
https://sourceforge.net/p/gnuplot/bugs/2591/
 
https://groups.google.com/g/comp.graphics.apps.gnuplot/c/1etT8-2x8cg
 

2021年2月3日水曜日

Cent OS 7 にtgifを入れる.Gnuplotでtgifを出力する.

 Tgif を入れる
$ wget http://bourbon.usc.edu/tgif/ftp/tgif/tgif-QPL-4.2.5.tar.gz
$ tar zxvf tgif-QPL-4.2.5.tar.gz
$ cd tgif-QPL-4.2.5
$ sudo yum install imake libXmu-devel libidn-devel libXt-devel
$ sudo yum install xorg-x11-fonts-ISO8859-1-100dpi.noarch xorg-x11-fonts-ISO8859-1-75dpi.noarch  xorg-x11-fonts-ISO8859-14-100dpi.noarchxorg-x11-fonts-ISO8859-14-75dpi.noarch xorg-x11-fonts-ISO8859-15-100dpi.noarch xorg-x11-fonts-ISO8859-15-75dpi.noarch xorg-x11-fonts-ISO8859-2-100dpi.noarch xorg-x11-fonts-ISO8859-2-75dpi.noarch  xorg-x11-fonts-ISO8859-9-100dpi.noarchxorg-x11-fonts-ISO8859-9-75dpi.noarch
$ ./configure
$ make
$ sudo make install

Gnuplot を SourceForge からダウンロードして解凍
https://sourceforge.net/projects/gnuplot/files/gnuplot/
$ tar zxvf gnuplot-5.4.1.tar.gz
$ cd gnuplot-5.4.1
$ ./configure -with-tgif
$ make
$ sudo make install
 
Gnuplot 5.4では tgif はレガシーだって,トホホ


2019年11月10日日曜日

Gnuplot で 3 次元プロットでフィッティングする(誤差項を追加する)

Gnuplot で3次元フィッティングを行おうとしたら,うまくフィッティングできず

Singular matrix in Invert_RtR
error during fit

と怒られてしまう.
3次元フィッティングでは x:y:z だけでなく誤差項 s も必要で,誤差項を与えないとフィッティングができない.誤差の評価をしていない場合は定数を与えればよい.

a=-0.5;b=-0.5;c=90;d=0.008
f(x,y)=a*x+b*y+c+x*y*d+1e-9
fit f(x,y) "hspice.mt0" using ($2*1000):($3*1000):($5*1000):(1) via a,b,c,d
splot "hspice.mt0" using ($2*1000):($3*1000):($5*1000) w p, f(x,y)

昔(3.6.x)は無くてもよかった気がするが,少なくとも3.7.x以降は必要らしい.

gnuplot のページ (Takeno Lab)
http://takeno.iee.niit.ac.jp/~foo/gp-jman/#Q11

2015年2月25日水曜日

gnuplotでパースできない行を飛ばす

CADやプログラムの出力結果をgnuplotでプロットする事はよくある.gnuplotはデータ部がcsvやタブ区切り,空白区切りであればパースできるが,出力結果にCADのバージョンやIndexなどがgnuplotのコメント形式と異なる形式で出力されるとgnuplotはファイルの読み込みをやめてしまう.
たとえばHSPICEであれば,ファイル先頭にHSPICEのバージョンやタイトル,Measureの名前が書かれているのでそのままではgnuplotでは読み込めない.

これを回避するために,パースできない行を見つけたときに読み込みを停止するのではなく,処理を続行させるように変更してみる.

src/plot2d.cを開き,get_data関数内のswitch(j)文中のcase 0を探す.
(4.6.0 patch 0だと669行目)

case 0: /* not blank line, but df_readline couldn't parse it */
{
df_close();
int_error(current_plot->token,
"Bad data on line %d", df_line_number);
}
break;

以下の様にコメントアウトする.


case 0: /* not blank line, but df_readline couldn't parse it */
{
//df_close();
//int_error(current_plot->token,
//"Bad data on line %d", df_line_number);
}
break;



あとは./configure,make,make installすればよい.モチベーションはkamae君と同じ.彼の方が正攻法だと思うが,こちらはgunplotに違反する構文がある行が不明でも対応できる.

2012年11月12日月曜日

gnuplotのグラフをPowerPointに貼る

PowerPointでは,gnuplotが出力したepsファイルをOffice描画オブジェクトとして編集することができる.

epsファイルをドラッグアンドドロップでスライドに移動させると,epsがスライドに表示される.この状態で右クリック→[図の編集]を選択すると,以下のようなダイアログが表示される.




ここで[はい]を押すと,Office描画オブジェクトに変換される.任意の回数右クリックし,[グループ化]→[グループ化の解除]を選択すると,以下のように各オブジェクトを個別に操作することが可能になる.




ベクターイメージなので,拡大しても綺麗なままなのがうれしい.A0のポスターに貼り付けたがビットマップイメージと異なり綺麗なまま印刷できた.
昔はepsから外部ツールを使ってemfに変換したり,それではうまくいかないからと泣く泣くpng等に変換して貼っていたが,ドラッグアンドドロップでうまくいくとは気がつかなかった.

2012年5月24日木曜日

gnuplotのプロット結果をzsh関数を使ってファイルに書き出す

測定結果をgnuplotでプロットする事が多いと思いますが,あとで微修正しようとして「ああ,どういう条件でプロットしたか忘れた!」と言うこと,よくありますよね.私は一つの図に対して一つのgnuplotのコマンドファイルを用意するようにしているのですが,saveコマンドでは余計な変数定義が大量に挿入されること,replotがすべてplotに結合されてしまう事から,

(1) gnuplotに打ち込んだコマンドをヤンク

(2) テキストエディタにコピー

(3) gnuplotのターミナル等を手動で消す

という作業をしていました.
zed等を使っていたのですが,もっと効率的に作業できないかと思い,zshの関数zed-plt()を作ったので公開してみる.~/.zshrcに書き込むだけ!


function zed-plt () {
local zed_file_name
zed_file_name=$1
echo "usage: C-xC-w:save C-c:cancel"
zed $zed_file_name
if [[ -f $zed_file_name ]] then
sed -e "s/gnuplot> //g;/Terminal type set to/D;/Options are/D" $zed_file_name > tmpfile.plt
mv tmpfile.plt $zed_file_name
fi
return 0
}


使い方は
% zed-plt "filename.plt"
でまずzedが開くので,ここにgnuplotに打ち込んだコマンドをコピー&ペースト
その後C-x,C-wでzedをセーブすると,sedで不要な文字列を削除という流れ.

% zed-plt hoge.plt
usage: C-xC-w:save C-c:cancel
gnuplot> plot "Sec4-VCCS-Current.txt" w lp
gnuplot> set yrange [0:200]
gnuplot> set size 0.7,0.7
gnuplot> replot
gnuplot> set terminal tgif 24
Terminal type set to 'tgif'
Options are 'portrait [1,1] color linewidth 1.000000 dashed "Helvetica" 24'
gnuplot> set output "Sec4-VCCS-Current.obj"
gnuplot> replot
gnuplot> exit
% cat hoge.plt
plot "Sec4-VCCS-Current.txt" w lp
set yrange [0:200]
set size 0.7,0.7
replot
set terminal tgif 24
set output "Sec4-VCCS-Current.obj"
replot
exit


お手軽にコマンドをセーブできるようになって上機嫌!