• ベストアンサー

C言語でグラフ作成??

C言語でグラフ作成(2次元) ↓ グラフをJPEGなどの画像データで出力 以上のことを行いたいと思っています。 簡単にできる方法をご存知の方がいましたら教えていただけないでしょうか? また参考サイトやわかりやすい本などがあれば教えていただけないでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

グラフを書く、といっても 1) 数値上での座標を求める 2) 1)を画面上(画像上)の座標に変換する 3) 2)を使って、線や点や他の図形を書く 4) 3)を画面に表示したり、ファイルに保存したりする ざっと見てもこれくらいの処理があって、元の質問だと、これを全部Cでやりたい、と読めます。 で、Cでやろうとすると、純粋な演算だけの1),2)はともかく、3)や4)には「標準」の方法はありません。WindowsだったらWin32 APIで可能だが、Linuxでは使えない、等の「環境依存」の度合いが大きくなりますから。 これが、Gnuplotを使うとなると、Cでやる必要があるのは1)だけです。2以降はGnuplotの仕事になります。 Cのプログラムは 1)の座標(と、グラフ表示のためのいくつかの設定)をprintfで出力するだけの単純なものになります。どんな内容を出力するか、は、CではなくてGnuplotのマニュアルを参考に決めます。繰り返しになりますが、Cではそれをprintf(他の関数でもいいですが)するだけです。 そもそも、Cでやるべきものなのかも疑問です。データによっては、Gnuplotだけで済みます。

saterain20
質問者

お礼

すみません。ありがとうございます。

その他の回答 (4)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> いえ、gunplotを使ってグラフを書こうと考えています。 それを先に書かないと... gnuplotを使うことが決まっているのであれば、そのドキュメントを読んでください。

saterain20
質問者

お礼

すみません。ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

ごめん, 「C言語でグラフ作成」と「gunplotを使ってグラフを書こうと考えています」の関係がまったくわからん. 「gnuplot を使ってグラフを描く」のが, なんで「C言語」と関係するんだ?

saterain20
質問者

お礼

すみません。知識不足でした。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> これを折れ線グラフにしたいと思っています。 では、Bresenhamのアルゴリズムで調べてみてください。 というか、本当にスクラッチで実装したいのでしょうか?

saterain20
質問者

お礼

すみません。ありがとうございます。

saterain20
質問者

補足

いえ、gunplotを使ってグラフを書こうと考えています。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

処理系不明の状況では、スクラッチで実装するしかありません。 JPEGだと大変ですので、まずはBMPから始めたほうがよいでしょうね。 あとはどんなグラフかによります。 棒グラフとかだと簡単ですが、文字を描画するのが一番大変かもしれません。 まあ、数字だけならフォントを自作してもしれていますが...。

saterain20
質問者

お礼

すみません。ありがとうございます。

saterain20
質問者

補足

さっそくのご回答ありがとうございます。処理するデータはCSV形式の2列データです。行数は30行程度です。 これを折れ線グラフにしたいと思っています。 アドバイズいただけないでしょうか?

関連するQ&A

  • エクセルグラフ作成方法教えて下さい。

    エクセルグラフ作成方法教えて下さい。 画像のC表の参考グラフを自己資料で作成したいのですが、素人でデーターの作成からお教え頂きたいのですが。 宜しくお願い致します。

  • C言語 3次元グラフ

    今、スペクトラムアナライザという計測機器をC言語を用いてデータを取得し、CSVファイルに書き込みました。その後、CSVファイルを開き、エクセルで3Dグラフ(等高線を用いました)にしようとしたのですが系列が255個までという制限がありました。私の取得したデータは461ポイントあるのでグラフを2分割しなければなりません。 CSVファイルの中身の一例としては 周波数,8000,9000,10000・・・ 11:00,-60E01,-61E01,-61E01・・・ 11:01,-62E01,-61E01,-60E01・・・ ・ ・ ・ ちょっと見づらいですが、1行目が周波数で1列目が取得した時間で2行目以降は周波数における電力です。プログラムとしてはデータを取得するコマンドを1秒ごとに送り、1行ごとにCSVファイルに書き込みをしています。 前置きが長くなりましたが、これを3Dグラフにするには何を学習しなければならないでしょうか?友達はWindowsプログラミングで書けばいいよと教えてくれたので、猫でも分かるWindowsプログラミングを買ってきたのですが中々難しそうで最初から挫折しそうです。後、いろいろ調べているとgnuplotという単語が良く出てくるのですが、 1)gnuplotで3次元グラフは作成できますか? 2)仮にgnuplotで3次元グラフが描けるなら、Windowsプログラミングとgnuplotではどちらを学習したほうがいいでしょうか? 参考書やお勧めのURLがあったらお願いします。

  • C言語でcgi

    こんにちわ!C言語でcgiを作成したいと思っています。 C言語でcgiを作成するに当たって参考になる書籍や サイトなどございましたら是非教えていただきたいです。 (書籍を中心に教えていただきたいです。) 過去に書店でC言語の本を読んだりしていたのですが どれもcgiとは方向性が違うような気がしました。 また効率がいい技術の習得方法などもあわせて教えていただければ うれしいです。よろしくお願いします。

  • C言語でヒストグラムを作成するプログラムを作りたいのですが

    C言語でヒストグラムを作成するプログラムを書いたのですが、正しい濃度値が出力されずに困っています。 ヘッダなしの2バイト画像データを読み込みヒストグラムを書き出すプログラムです。 gccを使っています。 よろしくお願いします。

  • C言語での通信システムの作成

    はじめまして。 C言語で通信システム(信号発生から、受信まで)を作成しシミュレーションを行いたいと考えています。C言語はあまり得意でないので、C言語のソースコードが載っている様な参考になる本や、Web siteをご存知の方がいらしたら教えてください。よろしくお願いします。

  • C言語で2次元画像

    C言語で2次元画像を書きたいです。 例えば、a.datと言うファイル 1   10 2   20 3   30 4   40 .   . .   . などなど このファイルを2次元の曲線として出力したいです。 できますでしょうか? 教えてください! お願いします。

  • C言語の作成依頼です。

    C言語でカラー画像をグレースケール化するプログラムを作成していただけませんか? 入力画像と出力画像のフォーマットはppmで計算方法は重み付けした輝度の計算で処理したいと思っています。 (0.299 * R + 0.587 * G + 0.114 * B) Opencvを使わないで作成お願いします。 画像のサイズは360×270 です。 できるだけ計算時間のかかるも

  • C言語

    C言語を使ってオセロを作りたいと思っています。 何か参考になるサイトや本はあるでしょうか?

  • C言語で大量の画像を処理する方法

    C言語で大量の画像を処理する方法について 今度C言語もしくはC++で大量の画像を処理することとなったのですが、 大量の画像に対して同じような処理をする場合なにかいい方法はないでしょうか? 具体的には 画像1を読み込む ↓ 画像1に処理を施し、その値を出力 ↓ 画像2を読み込む ↓ のような感じです。 ここでいう処理は画像の信号によって値は変わりますが、処理方法は同じです。 よろしければ参考になるサイト等も教えていただけると助かります。

  • 自動でグラフを作成するソフトを探しています

    CSVのデータを取り込み、折れ線グラフを自動で作成し、画像で出力してくれるフリーソフトを探しています。 CSVファイルが多く(約500)、また毎日データが追加される為、Excelのグラフ機能で1つ1つ作成する方法は手間がかかり過ぎてできません。 Vectorで探してみましたが、散布図や3Dのソフトはあるものの、単純にCSVを折れ線グラフにするソフトが見つかりませんでした。 Rも触ってみたのですが、プログラミングの知識がなく、エラーばかりで作成まで漕ぎ着けられませんでした。 求める機能は以下の通りです。 ・CSVデータを取り込んでグラフ化できる ・グラフを画像で出力できる ・(可能であれば)複数のCSVファイルを一括で処理できる オススメのソフトがありましたら、ぜひご教示下さい。

専門家に質問してみよう