UNIX の優れたコマンドライン チャート作成/グラフ作成/プロット ツールはありますか? ASCII グラフに xy ポイントをプロットするものを探しています。
明確にするために、グラフをASCII(ascii-artスタイルなど)で出力するものを探しているので、Xを必要とせずにインタラクティブシェルセッションで使用できます.
UNIX の優れたコマンドライン チャート作成/グラフ作成/プロット ツールはありますか? ASCII グラフに xy ポイントをプロットするものを探しています。
明確にするために、グラフをASCII(ascii-artスタイルなど)で出力するものを探しているので、Xを必要とせずにインタラクティブシェルセッションで使用できます.
gnuplotを試してください。非常に強力なグラフ作成の可能性があります。
次の方法で端末に出力できます。
gnuplot> set terminal dumb
Terminal type set to 'dumb'
Options are 'feed 79 24'
gnuplot> plot sin(x)
1 ++----------------**---------------+----**-----------+--------**-----++
+ *+ * + * * + sin(x) ****** +
0.8 ++ * * * * * * ++
| * * * * * * |
0.6 ++ * * * * * * ++
* * * * * * * |
0.4 +* * * * * * * ++
|* * * * * * * |
0.2 +* * * * * * * ++
| * * * * * * * |
0 ++* * * * * * *++
| * * * * * * *|
-0.2 ++ * * * * * * *+
| * * * * * * *|
-0.4 ++ * * * * * * *+
| * * * * * * *
-0.6 ++ * * * * * * ++
| * * * * * * |
-0.8 ++ * * * * * * ++
+ * * + * * + * * +
-1 ++-----**---------+----------**----+---------------**+---------------++
-10 -5 0 5 10
は強力ですがgnuplot
、多数のポイントをパイプしてグラフを取得したいだけの場合は、非常にイライラします。
ありがたいことに、誰かがeplot (簡単なプロット) を作成してくれました。
端末グラフを強制するオプションがないようです。私は次のようにパッチを当てました:
--- eplot.orig 2012-10-12 17:07:35.000000000 -0700
+++ eplot 2012-10-12 17:09:06.000000000 -0700
@@ -377,6 +377,7 @@
# ---- print the options
com="echo '\n"+getStyleString+@oc["MiscOptions"]
com=com+"set multiplot;\n" if doMultiPlot
+ com=com+"set terminal dumb;\n"
com=com+"plot "+@oc["Range"]+comString+"\n'| gnuplot -persist"
printAndRun(com)
# ---- convert to PDF
使用例:
[$]> git shortlog -s -n | awk '{print $1}' | eplot 2> /dev/null
3500 ++-------+-------+--------+--------+-------+--------+-------+-------++
+ + + "/tmp/eplot20121012-19078-fw3txm-0" ****** + * | 3000 +* ++ |* | | * | 2500 ++* ++ | * |
| * |
2000 ++ * ++
| ** |
1500 ++ **** ++
| * |
| ** |
1000 ++ * ++
| * |
| * |
500 ++ *** ++
| ************** |
+ + + + ********** + + + +
0 ++-------+-------+--------+--------+-----***************************++
0 5 10 15 20 25 30 35 40
feedgnuplotは gnuplot のもう 1 つのフロント エンドで、データのパイピングを処理します。
$ seq 5 | awk '{print 2*$1, $1*$1}' |
feedgnuplot --lines --points --legend 0 "data 0" --title "Test plot" --y2 1 \
--terminal 'dumb 80,40' --exit
Test plot
10 ++------+--------+-------+-------+-------+--------+-------+------*A 25
+ + + + + + + + **#+
| : : : : : : data 0+**A*** |
| : : : : : : :** # |
9 ++.......................................................**.##....|
| : : : : : : ** :# |
| : : : : : : ** # |
| : : : : : :** ##: ++ 20
8 ++................................................A....#..........|
| : : : : : **: # : |
| : : : : : ** : ## : |
| : : : : : ** :# : |
| : : : : :** B : |
7 ++......................................**......##................|
| : : : : ** : ## : : ++ 15
| : : : : ** : # : : |
| : : : :** : ## : : |
6 ++..............................*A.......##.......................|
| : : : ** : ##: : : |
| : : : ** : # : : : |
| : : :** : ## : : : ++ 10
5 ++......................**........##..............................|
| : : ** : #B : : : |
| : : ** : ## : : : : |
| : :** : ## : : : : |
4 ++...............A.......###......................................|
| : **: ##: : : : : |
| : ** : ## : : : : : ++ 5
| : ** : ## : : : : : |
| :** ##B# : : : : : |
3 ++.....**..####...................................................|
| **#### : : : : : : |
| **## : : : : : : : |
B** + + + + + + + +
2 A+------+--------+-------+-------+-------+--------+-------+------++ 0
1 1.5 2 2.5 3 3.5 4 4.5 5
を実行して、Debian および Ubuntu にインストールできますsudo apt install feedgnuplot
。
端末にデータを直接プロットできるようにするパッケージplottextを確認してください。構文がmatplotlibに非常に似ているため、非常に直感的です。
以下に基本的な例を示します。
import plotext as plt
y = plt.sin() # sinusoidal signal
plt.scatter(y)
plt.title("Scatter Plot")
plt.show()
次のコマンドでインストールできます。
sudo -H pip install plotext
matplotlib に関して言えば、主な機能はscatter (単一点の場合)、plot (線で結ばれた点の場合)、およびshow (実際に端末にプロットを出力するため) です。プロットの寸法、点と線のスタイル、およびプロットされた座標を元の実数値に変換するために使用される軸、数値目盛り、および最終方程式を表示するものを指定するのは簡単です。
上記のプロットを生成するコードは次のとおりです。
import plotext.plot as plx
import numpy as np
l=3000
x=np.arange(0, l)
y=np.sin(4*np.pi/l*np.array(x))*np.exp(-0.5*np.pi/l*x)
plx.scatter(x, y, rows = 17, cols = 70)
plx.show(clear = 0)
連続データ フローをプロットする例を次に示します。
でインストールできます
pip install plotext
または:
pip install "plotext[image]" to use plotext with images.
gnuplotは、あなたの質問に対する決定的な答えです。
私は個人的にgoogle chart APIの大ファンでもあります。コマンドラインから wget (または curl) を使用してアクセスし、png ファイルをダウンロード (および xview などで表示) できます。このオプションが気に入っているのは、グラフが少しきれいになる (つまり、アンチエイリアシングが改善される) からです。
gnuplot のもう 1 つのシンプルで軽量な代替手段は、 NodeJSベースのターミナル チャート ツールである ervy です。
サポートされているタイプ: 散布図 (XY ポイント)、バー、パイ、ブレット、ドーナツ、ゲージ。
さまざまなオプションを使用した使用例は、プロジェクトのGitHub リポジトリにあります。
gnuplot を使用し、起動後に必ずコマンド「set term dumb」を発行してください。行数と列数を指定することもできます。「set term dumb 64 10」を発行してから「plot sin(x)」を発行した場合の gnuplot の出力は次のとおりです。
1 +--------------****-----------+--***-------+------* ***--++ 0.6 *+ **+ * +** * sin(x)*******++ 0.2 +* * * ** ** * **++ 0 +* ** * ** * ** *++ -0.4 ++** * ** ** * * *+ -0.8 ++ ** * + * ** + * +** +* -1 ++----****------+-------***---+----------********- ------++ -10 -5 0 5 10
79x24 の方が見栄えがします (80x24 ディスプレイでは 80 番目の列を使用しないでください。curses の実装によっては、最後の列の周りで常に適切に動作するとは限りません)。
私は gnuplot v4 を使用していますが、これは少し古いか新しいバージョンで動作するはずです。
termplotlib (私のプロジェクトの 1 つ) が最近人気を集めているので、おそらくこれは一部の人にとっては役立つでしょう。
import termplotlib as tpl
import numpy
x = numpy.linspace(0, 2 * numpy.pi, 10)
y = numpy.sin(x)
fig = tpl.figure()
fig.plot(x, y, label="data", width=50, height=15)
fig.show()
1 +---------------------------------------+
0.8 | ** ** |
0.6 | * ** data ******* |
0.4 | ** |
0.2 |* ** |
0 | ** |
| * |
-0.2 | ** ** |
-0.4 | ** * |
-0.6 | ** |
-0.8 | **** ** |
-1 +---------------------------------------+
0 1 2 3 4 5 6 7