3

複数の列を持つデータファイルがあります。最初の 2 列は位置を示し、他の列は他のプロパティ (この時点から送信されたアイテムの数など) を示します。例えば:

1  1  1  57.11
2  1  2  62.40
3  4  1  31.92

私がやりたいのは、位置にポイントをプロットすることですが、他の列の値を使用してポイントのタイプとサイズを変更します(たとえば)。ただし、プロット内の列を参照する方法が見つからないようです。「変数」の使用法は知っていますが、複数の変数を使用する方法が見つかりません。

私が欲しいのは次のようなものです:

plot "mydata" using 1:2 notitle with points pt ($3) ps ($4/10)

そのため、pt と ps は、それぞれ 3 列目と 4 列目から取得した各点の値を使用します。

これはgnuplotでも可能ですか? ある種の回避策はありますか?

4

1 に答える 1

5

variableキーワードを使用して、次のようなことができるはずです。

plot 'datafile' using 1:2:3:4 w points ps variable lc variable

または、値をパレットにマッピングする可能性があります。

plot 'datafile' using 1:2:3:4 w points ps variable lc palette

キーワード variable および/または palette により、gnuplot はファイルからプロパティを読み取りますが、どちらも を介して追加の列を読み取る必要がありますusing。もちろん、すべての通常の使用が適用されます-データなどに変換を適用できます。

plot 'datafile' using 1:2:3:($4+32.) w points ps variable lc palette

ここで 3 番目の列がポイントサイズになるのかカラーになるのか頭の中で覚えていません。実験を行ってコメントを投稿するか、時間があるときにこれに戻って更新を追加します.


他のプロパティの一部 (例: pointtype) は、 を使用して簡単に変更することはできませんvariable。これを行う最も簡単な方法は、gnuplot 三項演算子でフィルターを使用することです。

まず、データファイルの 1 列のデータに基づいてポイントタイプを返す関数を作成します。

my_point_type(x) = x   

ここでは単純な恒等関数を使用していますが、何でもかまいません。これで、必要なポイント タイプ (ここでは 1 ~ 10) をループして、それぞれのプロットを作成できます。

plot [for PT=1:10] 'datafile' u 1:((my_point_type($3) == PT) ? $2:NaN) with points pt PT

これは、pointtype 情報を含む列が 3 番目の列であり、2 番目の列が位置情報を保持していると想定しています。これは、上で示したものと組み合わせることもできます。

于 2013-01-19T14:39:28.583 に答える