GNUPLOTを用いてグラフ化を行っています。

グラフ化するうえで、複数のグラフを同じ図面上に重なるように表示させたいのですが、GNUPLOTでは点や線の種類が少なく、複数のグラフの一括表記には不向きな気がしております。

実際のところ、複数のグラフを1枚の図上に表記するのは不向きなのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

1つのグラフ上に 10個も 20個も書いたら「どんなふうに書いても見やすくはならない」ように思えるのだが....



さておき, 「線の種類」については自分で設定できるはず. もっとも, できなかったとしても「gnuplot のせい」とはいえない面もあります.
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2011/04/28 16:13

「複数」というのは, 具体的にはどれくらい?


あと, この質問のどこが C&C++ に関係するの?
    • good
    • 0
この回答へのお礼

コメントありがとうございます。10から20のグラフを書きたいと思っています。

この質問はC言語とは関係ありません。すみません。ただ、C言語に詳しい方ならご存知ではないかと思い質問させていただきました。

お礼日時:2011/04/25 23:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語 コンパイラ

C言語のコンパイラを無料でインストールしたいのですが
気に入ったのが見つかりませんでしたぁ
いいコンパイラがあったら教えてください
よろしく御願いします

Aベストアンサー

その前に対象OSやプラットフォームなどの環境を書かないと何とも
いえないと思います。

クロスコンパイラならみなさんのいうようにGCCが一番でしょうし、
Winに限定するならBCCかVC++ Express Editionがいいでしょう。
MS-DOSならLSI C-86試食版なんてのもありますけど。

なんか、上手く動作しないけどWatcom Cなんて手もあるかも。

Cだけでいいのか、C++が使えた方がいいのかによっても異なります。

参考URL:http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E

QC言語を用いて、GNUPLOTでリアルタイムにグラフ化方法について。

C言語を使用して、GNUPLOTを呼び出し、時間とともに更新されていくデータをリアルタイムでグラフ化しようと思っていますが、なかなかうまくいきません。
私が考えていた簡単なプログラムのシーケンスとして、(OSはLinuxです。)

~データの作成~
 fopen;データファイルの作成
 fprintf;/データの作成
 fclose;/データの保存
~グラフ化~
 popen;/GNUPLOTの呼出
 fprintf(---,”plot \”[作成したデータファイル]\”\n”);/グラフ化
~データの更新~
 fopen;
 fprintf;
 fclose;/データの上書き
~グラフの更新~
 fprintf(---,”reread\n”);/データの再読み込み
 fprintf(---,”replot\n”);/グラフの更新
~データの更新~
~グラフの更新~
・・・/ループ
 pclose;/GNUPLOTの終了

と、データを更新したら、グラフ化をしていく予定でした(汗)。
テスト的に10回だけデータの更新をするプログラムを動作させると、
データの更新を先に全部行ってしまい、グラフ化されるのが、最後の更新データのみでした。
どのようにしたら、リアルタイムにデータをプロットできるでしょうか??
よろしくお願い致します。

C言語を使用して、GNUPLOTを呼び出し、時間とともに更新されていくデータをリアルタイムでグラフ化しようと思っていますが、なかなかうまくいきません。
私が考えていた簡単なプログラムのシーケンスとして、(OSはLinuxです。)

~データの作成~
 fopen;データファイルの作成
 fprintf;/データの作成
 fclose;/データの保存
~グラフ化~
 popen;/GNUPLOTの呼出
 fprintf(---,”plot \”[作成したデータファイル]\”\n”);/グラフ化
~データの更新~
 fopen;
 fprintf;
 fclose;/データの上書...続きを読む

Aベストアンサー

このサイトにヒントになりそうなことが載ってそうですね。
http://fenrir.naruoka.org/archives/000444.html
一度ご覧になってみて下さい。

QC言語のコンパイラについて

私は、高校でC言語を使った授業をしています。
学校のPCではMinGWのコンパイラを使っています。
家のPCでもC言語をしたいのですがコンパイラの入手法がわかりません。
どなたか教えてください。

Aベストアンサー

あなたの自宅のPCがwindowsであるならば、Cygwinを使われたらどうでしょう?
mingwのCコンパイラも存在します。

参考URL:http://cygwin.com/

Qグラフ描画コンテンツのgnuplotの使い方について質問します。

グラフ描画コンテンツのgnuplotの使い方について質問します。

グラフを書く際に、範囲を分けて書きたいのですがどのようにすればいいのでしょう?
具体的に言いますと、F(x)=x のグラフを x軸 -5から0までの範囲、g(x)=x*xのグラフを x軸 0から3までの範囲で描写したいときに、どう打ち込めばよいのでしょうか?

Aベストアンサー

GnuPlot のコマンドライン(gnuplot>)から、次のコマンドを入力してみてはいかがでしょう?
http://t16web.lanl.gov/Kawano/gnuplot/plot1.html#5.2


set xrange [-5:0]
set x2range[0:3]
set x2tics 0, 0.5
set xtics nomirror
set grid
plot x axis x1y1, x**2 axis x2y1

QC言語でのコンパイラの作成方法

C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。

現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。

というわけで、今回はコンパイラをどのように作ったらよいのかというヒントだけでもいいので教えて頂けないかと思い投稿させて頂きました。
ちなみに「temp.c」はそこまで複雑なソースではなく、DOS上のアプリで、リソースやアイコンなどは用いないものです。


そもそも「コンパイラを作る」ということ自体が愚かな行為なのかと思ったりもします。
私が所持しているBcpadやMicrosoft Visual C++ 6.0に付属している既存のコンパイラを利用するということも考えたのですが、BcpadやMicrosoft Visual C++ 6.0の本体以外からコンパイラをどのように利用していいのかもわかりません。

どうぞ忌憚の無い意見をよろしくお願いします。
ちなみにOSはXPのSP3です。

C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。

現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。

というわけで、...続きを読む

Aベストアンサー

あの・・・水を差すようで恐縮しますが

それって「コンパイラを作る」ではなくて
「コンパイラを呼び出す」だけでは?

ボタンを押したら
外部プログラムとして cc コマンドを実行するだけ…。
最近 C++ やってないんで忘れましたが WinExecとか CreateProcess とか使って…。もちろん環境変数や実行パラメータはきちんとセットした上でですけど…。Microsoft Visual C++ 6.0でもコマンドプロンプトだけでコンパイルできますから。

Qgnuplotの出力グラフ名を外部で書き換えたい

LINUX上のCからgnuplotを用い、適当なデータを作成し、グラフを1枚作成することに成功しました。今後はループ処理によって、データ名とグラフ名を替えながら大量のデータ処理をするつもりです。 gnuplotに送りこむデータ名の変更の仕方、グラフ名の変更の仕方を教えてください。

'out.data','out.png'を書き換える方法です。例えば’out1.data'から'out1000.data'。'out1.png'から'out1000data'のようにできれば、1000個のデータを処理し1000枚のグラフを作成できます。

下記に適当なグラフを出力するプログラム例を示します。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void){
FILE *data, *gp
char *data_file;
int i;
double x,y;

//make data file
data_file="out.data";
data = fopen(data_file,"w");

for(i=0;i<=5;i++){
x=i;
x=i*i;
fprintf(data,"%f\t%f\n",x,y);
}
fclose(data);

//make graph
gp=popen("gnuplot -persist","w");
fprintf(gp,"set terminal png\n");
fprintf(gp,"set xrange [0:5]\n");
fprintf(gp,"set yrange [0:50]\n")
fprintf(gp,"set output 'out.png'\n");
fprintf(gp,"plot \"%s\"with lines linetype 1 \n", data_file);
pclose(gp);
return(gp);
return 0;
}

LINUX上のCからgnuplotを用い、適当なデータを作成し、グラフを1枚作成することに成功しました。今後はループ処理によって、データ名とグラフ名を替えながら大量のデータ処理をするつもりです。 gnuplotに送りこむデータ名の変更の仕方、グラフ名の変更の仕方を教えてください。

'out.data','out.png'を書き換える方法です。例えば’out1.data'から'out1000.data'。'out1.png'から'out1000data'のようにできれば、1000個のデータを処理し1000枚のグラフを作成できます。

下記に適当なグラフを出力するプログ...続きを読む

Aベストアンサー

ん~... そこまでできてて, なにで困っているんだろう.... 単純には
FILE *gp = popen("gnuplot -persist","w");
fprintf(gp,"set terminal png\n");
fprintf(gp,"set xrange [0:5]\n");
fprintf(gp,"set yrange [0:50]\n");
for (int i = 0; i < てきとうなところ; i++) {
char data_file[いくつか];
sprintf(data_file, "out%d.data", i);
FILE *data = fopen(data_file, "w");
/* データファイルに出力するところは全部ばっさり省略 */
fclose(data);
fprintf(gp, "set output 'out%d.png'\n", i);
fprintf(gp,"plot \"%s\"with lines linetype 1 \n", data_file);
}
pclose(gp);
でいいと思うんだが, なにかおかしなところはあるのかな?

ん~... そこまでできてて, なにで困っているんだろう.... 単純には
FILE *gp = popen("gnuplot -persist","w");
fprintf(gp,"set terminal png\n");
fprintf(gp,"set xrange [0:5]\n");
fprintf(gp,"set yrange [0:50]\n");
for (int i = 0; i < てきとうなところ; i++) {
char data_file[いくつか];
sprintf(data_file, "out%d.data", i);
FILE *data = fopen(data_file, "w");
/* データファイルに出力するところは全部ばっさり省略 */
fclose(data);
fprintf(gp, "set output 'out%d.png'\n", i);
fprintf(gp,...続きを読む

QC言語のコンパイラ

C言語の勉強がしたいと思っているのですが、コンパイラっていうんですかね、それについて少し調べてみたら
無料なら"Borland C++ Compiler"で、有料ならなんかかなり高いっぽいけど"Visual C++"っていうのがあることが解りました。

よくプログラミング系のサイトの人で"Borland C++"のコンパイラを利用してとてもプログラミングがしやすくなったということが書いてあるのですが、"Visual C++"と比べたらどっちの方がいいんですか?(やっぱり有料の方?)
もし人それぞれなら、みなさんは両方あったらどっちを使いますか?

初心者なら無料ので十分すぎるのだとは思いますが、プログラマーみたいな人から見るとどうなのかな~と思ったので教えていただけますか。
お願いします。
ついでに"Visual C++"って言語があるんですかね?何かそんな風に書いてあるところもあったもんで。
かさねがさねお願いします。

Aベストアンサー

Borland C++ Compilerは元々は有料ですよ。(パッケージ販売していた。)

統合環境など(IDE)を省いて無料として公開したものなのでなんら、無料だからといって劣る部分はありません。
(コンパイル速度もBC++の方が速いし。)

VC++がいいと言われている利点はMS社製なのでOSと同じ会社と言うことで親和性が高い、サンプルソースコード等の資料がボーランド用に比べて極端に多いという利点があります。

勿論、VC++用のソースコードでもBC++とVC++の違いを理解していれば、コンパイル可能です。(ライブラリ関係の呼び出し方が違うのでDLLをBC++用にインポートするなど)

個人的な意見ですが、純粋にプログラムを学びたいというのであればBC++で十分です。(もったいないくらい、昔は5,6万位だして買った記憶が、、、。)

本格的にWindowsのプログラムを学びたいのならVC++の購入を検討してみるべきです。(逆に、それくらいの金額を自分に投資できないならたとえVC++が無料であっても使いこなさないと思います。)

Borland C++ Compilerは元々は有料ですよ。(パッケージ販売していた。)

統合環境など(IDE)を省いて無料として公開したものなのでなんら、無料だからといって劣る部分はありません。
(コンパイル速度もBC++の方が速いし。)

VC++がいいと言われている利点はMS社製なのでOSと同じ会社と言うことで親和性が高い、サンプルソースコード等の資料がボーランド用に比べて極端に多いという利点があります。

勿論、VC++用のソースコードでもBC++とVC++の違いを理解していれば、コンパイル可能です。(ライブ...続きを読む

QC言語を用いて、csvファイル内の特定の行を指定して計算を行うにはどうすればよいか?

以下はC言語を用いて、csvファイルを読み込み、各行の値を配列に格納後、総和を求めるプログラムです。
ファイル内の値の総和は求めるプログラムは書けるのですが、例えばTESTcsvファイル内の2行目と5行目の和を求めるプログラムなど、ある特定の行のみを指定して計算を行うようなプログラムはどのように書けばよいかわかりません。
そこで、以下のような質問をさせていただきます。みなさまの回答から今後、自分で応用できるようにしたいと考えています。

質問:
下記のプログラムで/*ここから下*/の部分を変更して、TESTcsvファイル内の2行目と5行目の和を求めるにはどうすればよいか?(→output「25+32=57」としたい)



////////////////////////////////////////////////////////////////////////////
#include &lt;stdio.h&gt;


int main(void){

FILE *fp;
int e[6];
int i, sum=0;

if((fp = fopen(&quot;TEST.csv&quot;,&quot;r&quot;))==NULL){
printf(&quot;not open\n&quot;);
exit(1);
}
for(i=0;i&lt;=5;i++){
fscanf(fp,&quot;%d&quot;,&amp;(e[i]));
}
fclose(fp);



for(i=0;i&lt;=5;i++){
printf(&quot;e[%d] = %2d\n&quot;,i,e[i]);

}

 /*ここから下*/
for(i=0;i&lt;=5;i++){
sum = sum + e[i];

}

printf(&quot;%3d\n&quot;,sum);

return 0;
}



//////TESTcsv.file//////
12
25
13
40
32
28
//////////////////


//////output//////
e[0] = 12
e[1] = 25
e[2] = 13
e[3] = 40
e[4] = 32
e[5] = 28
150
//////////////////

以下はC言語を用いて、csvファイルを読み込み、各行の値を配列に格納後、総和を求めるプログラムです。
ファイル内の値の総和は求めるプログラムは書けるのですが、例えばTESTcsvファイル内の2行目と5行目の和を求めるプログラムなど、ある特定の行のみを指定して計算を行うようなプログラムはどのように書けばよいかわかりません。
そこで、以下のような質問をさせていただきます。みなさまの回答から今後、自分で応用できるようにしたいと考えています。

質問:
下記のプログラムで/*ここから下*/の部分を...続きを読む

Aベストアンサー

「2行目のデータ」って, どこにあると思う?

QMacで使えるC言語のコンパイラを教えてください

最近C言語の勉強を始めました。
私はMacユーザなのですがMacでCを使えるコンパイラはあるのでしょうか。ネットで探しても見つかりませんでした。もしご存じでしたら教えてください。

Aベストアンサー

MacでC言語の勉強をフリーの処理系で楽しむならMacintosh Programer's Workshopが良いと思います。
PowerPC用のC/C++コンパイラ、MC68K用のC/C++コンパイラ、MC68Kのデバイスドライバ開発などに使えるアセンブラとMacプログラミング(Toolboxプログラミング)に必要なResEditなどのツールが全てそろっています。
http://developer.apple.com/tools/mpw-tools/

hohihohiさんご紹介のCodeWarriorも良いのですが、いかんせん高価なのでDiscover Programming for Macintosh日本語版リリース5(¥2、8000)程度で始められても良いかもしれません。
勉強に必要な入門書などがセットになっています。
ただし、2次生産物(作成したソフトウェア)の配布権などに制限がありますので実力がついたらCodeWarriorにアップグレード(¥4、1000)すると良いでしょう。
http://www.metrowerks.co.jp/Products/Discover/Discover_Mac5.htm

日本語による1年間のテクニカルサポートに¥2、8000をかけると思えば安いと思います。

MacでC言語の勉強をフリーの処理系で楽しむならMacintosh Programer's Workshopが良いと思います。
PowerPC用のC/C++コンパイラ、MC68K用のC/C++コンパイラ、MC68Kのデバイスドライバ開発などに使えるアセンブラとMacプログラミング(Toolboxプログラミング)に必要なResEditなどのツールが全てそろっています。
http://developer.apple.com/tools/mpw-tools/

hohihohiさんご紹介のCodeWarriorも良いのですが、いかんせん高価なのでDiscover Programming for Macintosh日本語版リリース5(¥2、8000)程...続きを読む

Qgnuplotでグラフを作りたいんですが、わかりません。

どなたか詳しい方いらっしゃいましたらご教示ください。よろしくお願いします。

一次元熱伝導方程式
無限に長い一様な棒がある。熱は外にはもれず、x方向に流れるとする。
   u=u(x,t);温度、k;熱伝導率とする。
その時、温度uの時間変化は次の方程式に支配される。
(H) u[t]-ku[xx]=0 (xは実数、t>0)

問)
k=1とする。次の関数は(H)を満たす事を確かめて、(1)(2)を実行せよ。

u(x,t)=(1/sqrt(4πt))*(exp(-x**2/4t))

(1)tを適当に増やしたuのグラフを重ねて描け(2D表示)
(2)uを3D表示せよ。ただし、t方向の座標は”Time”と名づけよ。

Aベストアンサー

標準的には, グラフを描くときの変数として plot なら x, splot なら x, y を使います.
「t が認識されていない」の意味はわかりませんが, まず u(x, t) を定義してから
splot u(x, y)
を実行してみてください. どうなりますか?
この例で parametric は不要な気がするけどなぁ. どうして set parametric したんですか?


人気Q&Aランキング

おすすめ情報