C言語でグラフ作成(2次元)

グラフをJPEGなどの画像データで出力

以上のことを行いたいと思っています。
簡単にできる方法をご存知の方がいましたら教えていただけないでしょうか?
また参考サイトやわかりやすい本などがあれば教えていただけないでしょうか?

よろしくお願いいたします。

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

A 回答 (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だけで済みます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/23 16:46

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



それを先に書かないと...

gnuplotを使うことが決まっているのであれば、そのドキュメントを読んでください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/23 16:48

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



「gnuplot を使ってグラフを描く」のが, なんで「C言語」と関係するんだ?
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/23 16:47

> これを折れ線グラフにしたいと思っています。



では、Bresenhamのアルゴリズムで調べてみてください。

というか、本当にスクラッチで実装したいのでしょうか?

この回答への補足

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

補足日時:2011/04/22 16:15
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/23 16:48

処理系不明の状況では、スクラッチで実装するしかありません。


JPEGだと大変ですので、まずはBMPから始めたほうがよいでしょうね。

あとはどんなグラフかによります。
棒グラフとかだと簡単ですが、文字を描画するのが一番大変かもしれません。
まあ、数字だけならフォントを自作してもしれていますが...。

この回答への補足

さっそくのご回答ありがとうございます。処理するデータはCSV形式の2列データです。行数は30行程度です。

これを折れ線グラフにしたいと思っています。

アドバイズいただけないでしょうか?

補足日時:2011/04/22 15:27
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/23 16:47

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q種類の異なるグラフを同時に表示

うまく伝わるかどうか自信がありませんが、質問です。

エクセルでグラフを作成する際に、種類の異なるグラフを同時に
表示させたいのです。具体的には、
「集合縦棒」「積み上げ縦棒」「折れ線グラフ」
この3種類を表示させたいのです。

2Dと3Dのグラフは同時に表示させることはできないようですが、
この場合は違いますよね。
最初に普通の「集合縦棒」でグラフを作っておいて、あとから「データの追加」で
積み上げ縦棒を作ろうとすると、さっき作った集合縦棒の分までが
一緒に「積み上げ縦棒」として表示されてしまいます。

また、最初にグラフを作成する際に、グラフウィザードから「ユーザー設定」タブを
選択し、その中にある「2軸上の折れ線と縦棒」を選択し、ここでひとまず
普通の縦棒(集合縦棒)と折れ線グラフを同時に表示できますが、ここに
新たに積み上げ縦棒を追加しようと思うと、縦棒グラフが積み上げ縦棒に
なってしまいます。

そもそも、私が考えているのは不可能なことなんでしょうか?
それとも何か手段があるのでしょうか?

よろしくお願い致します。

うまく伝わるかどうか自信がありませんが、質問です。

エクセルでグラフを作成する際に、種類の異なるグラフを同時に
表示させたいのです。具体的には、
「集合縦棒」「積み上げ縦棒」「折れ線グラフ」
この3種類を表示させたいのです。

2Dと3Dのグラフは同時に表示させることはできないようですが、
この場合は違いますよね。
最初に普通の「集合縦棒」でグラフを作っておいて、あとから「データの追加」で
積み上げ縦棒を作ろうとすると、さっき作った集合縦棒の分までが
一緒に「積み上げ縦棒...続きを読む

Aベストアンサー

「棒グラフ」と「折れ線グラフ」は、種類が違うので
同時に表示できますが、
「集合縦棒」と「積み上げ縦棒」は形式が違っても
種類は同じなので、同時には表示できないのでは?

QC言語で5つの整数a、b、c、d、eを入力し、降順に整列した後に出力して終了するプログラムを作成してください

C言語で5つの整数a、b、c、d、eを入力し、降順に整列した後に出力して終了するプログラムを作成してください。

入力 出力
3 9
6 7
9 6
7 5
5 3

Aベストアンサー

>作成してください。
貴方が作成してください。

作成してわからないことがあったら、そのわからない部分を質問してください。
1.入力された数字を5回取得する。
2.5回取得したら、降順に整列する。
3.整列したら、出力する。
以上を作ればおしまいです。

QExcelグラフ応用・・・数値軸を5種類にしたい場合

また、質問です。
Excel2000で、OSもWin2000です。
Excelのグラフですが、数値軸を5種類にしたい場合はどうやってグラフを作成すれば宜しいでしょうか?また、作成後に編集する場合の方法も教えてください。

Aベストアンサー

> レーダーグラフとは、Excelで作成可能のものなのか

こちらはExcel2000ですが作成できます。
書かせていただいた通りのレイアウトですと
A1から

大きさ
サイズ
階級
長さ
のようになっていて、B列に数値が入っているのですね。

でしたらA1:B5をドラッグして画面の上にグラフアイコンがありませんでしょうか?
もしなければ挿入メニュー→グラフで、レーダーを選んでください。
レーダーグラフの形式は3種類あります。

> 作成後に編集する場合の方法も教えてください。

出来上がったグラフを右クリックしてグラフの種類、です。
元のデータの系列が列になっていればクモの巣グラフができます。

> 5種類とも単位(数値)が違う

5本の軸それぞれに違う単位を、とのことですか?
それは無理だと思いますので、付け焼刃的な方法としては
テキストボックスを重ねてしまうという方法を取る事があります。

もし、0.5もあれば200もあるなど、数値に開きがありましたら、
元のデータを工夫し、5段階評価にする、パーセンテージで計算する、
などの工夫が必要なのではないかなと思います。

> レーダーグラフとは、Excelで作成可能のものなのか

こちらはExcel2000ですが作成できます。
書かせていただいた通りのレイアウトですと
A1から

大きさ
サイズ
階級
長さ
のようになっていて、B列に数値が入っているのですね。

でしたらA1:B5をドラッグして画面の上にグラフアイコンがありませんでしょうか?
もしなければ挿入メニュー→グラフで、レーダーを選んでください。
レーダーグラフの形式は3種類あります。

> 作成後に編集する場合の方法も教えてください。

出来上がったグラ...続きを読む

Qc言語で作成したデータをwindowsのアプリ(VB6で作成)で読み取りたいのですが

VBで作成したアプリの中の変数の値をC言語で作成したプログラムで参照したり、C言語の変数(メモリの値)をVBのアプリで参照したいのですが、どのようにすればいいのでしょうか。
よろしくお願いします。

Aベストアンサー

>このAのプロパティをCコンパイラ の「LSI C-86試食版」で作成したプログラムBから読み書きしたいのです。この方法を教えていただけませんか。
C言語からでもCOMを利用することは可能ですが、LSI CはもともとMS-DOSやコンソール用のアプリケーション開発ソフトなので、もしかするとCOMの利用はできないかもしれません(私自身LSI-Cの知識がないのでわかりません)。
VCなどwindowsプログラミングに対応しているものの方がいいかもしれません。

VCでは

#import "progid:aaa.bbb.1" no_namespace, named_guids

void Test()
{
 long n;
 Ibbb* pBbb;
 CoInitialize(NULL);
 CoCreateInstance(&CLSID_bbb,NULL,CLSCTX_INPROC, &IID_Ibbb,(void **)&pBbb);
 n = pBbb->lpVtbl->プロパティ;
 pBbb->lpVtbl->Release(pBbb);
 CoUninitialize();
}

のようにします(もしかするともう少し修正する必要があるかもしれません)。このときaaaやbbbはCOMによって異なります。LSI-Cでは#importは動かないと思いますので自分でCOM用のヘッダーを書く必要があります。またCoInitializeのようなWindowsAPIもPlatformSDKからヘッダーを持ってくるなどして使えるようにする必要があると思います。

>このAのプロパティをCコンパイラ の「LSI C-86試食版」で作成したプログラムBから読み書きしたいのです。この方法を教えていただけませんか。
C言語からでもCOMを利用することは可能ですが、LSI CはもともとMS-DOSやコンソール用のアプリケーション開発ソフトなので、もしかするとCOMの利用はできないかもしれません(私自身LSI-Cの知識がないのでわかりません)。
VCなどwindowsプログラミングに対応しているものの方がいいかもしれません。

VCでは

#import "progid:aaa.bbb.1" no_namespace, named...続きを読む

Qエクセルで「グラフの種類」「

エクセルで「グラフの種類」「円」でグラフを作成する場合です。時計の12時を起点に時計回りで、それぞれ
53%、11%、10%、8%、その他で作りたいです。ところが、53%の分が12時からスタートしなかったり、一旦「モノクロ円」にしたらカラーに戻らなくなったりしまいました。どのようにしたらよいか教えてください。

Aベストアンサー

グラフの種類のユーザー設定のモノクロ円で、白黒にしたのだったら、再度グラフの種類を選択し、標準で円グラフ・形式を選択し、オプションの標準の書式にチェックを入れれば変わります。
また、起点の変更はグラフを選択、データ系列の書式設定からオプションで、グラフの基線位置の角度を変更すれば良いと思います。

これは、エクセル2000での方法ですが、多分エクセルだったらこれで可能だと思います。

QC言語 画像処理 jpeg → pgm

C言語 ( visual studio 2010 ) を使っております。

今回C言語で画像処理を行いたいです。

使用目的としましては、実際にデジカメでとった写真について使いたいのですが、デジカメで撮った写真はjpeg形式の為、これをpgm形式に変換したいのです。

しかし、プログラミング経験がほとんど無いため、どのようなプログラミングを作成してよいのか解りません。

一応、新版 明解C言語 入門編(出版社: ソフトバンククリエイティブ)は読んだのですが、作成できませんでした。

お教えいただけないでしょうか。
よろしくお願い致します。

Aベストアンサー

Susieプラグインの仕様については、以下のサイトのPlug-in Packageの中に
Spi_api.txtというAPIの仕様書があります。
http://www.digitalpad.co.jp/~takechin/download.html


プラグインのリンクについては、この辺読むとわかるんじゃないでしょうか。
http://www.asahi-net.or.jp/~kh4s-smz/spi/use_spi.html


デコード処理にはプログラムの知識はもとより、画像処理(というより信号処理に近い)の深い知識が
要求されます。
例えば
> 離散コサイン変換を用いて、空間領域から周波数領域へ変換する。(Wikipediaより抜粋)
という一文を読んで、「なるほどね」と思える程度には基礎知識をお持ちでないと辛いのではないかと思います。
先ほどの「初心者には難しい」という言い方はちょっとお気を悪くされたかもしれませんね。お詫びいたします。


#3さん、ご指摘ありがとうございます。
僕もどっかにあったはず、と思っていたのですが見つけられませんでした。

Susieプラグインの仕様については、以下のサイトのPlug-in Packageの中に
Spi_api.txtというAPIの仕様書があります。
http://www.digitalpad.co.jp/~takechin/download.html


プラグインのリンクについては、この辺読むとわかるんじゃないでしょうか。
http://www.asahi-net.or.jp/~kh4s-smz/spi/use_spi.html


デコード処理にはプログラムの知識はもとより、画像処理(というより信号処理に近い)の深い知識が
要求されます。
例えば
> 離散コサイン変換を用いて、空間領域から周波数領域へ変換する。(Wikiped...続きを読む

Qエクセル:グラフ:2種類のX軸の書式設定

X軸が2つあるグラフを作成しました。

X軸で右クリックして、「軸の書式設定」にて、配置を縦書きにしたいのですが
グラフエリアに近いほうのX軸(月数)は縦書きになるのですが
下段にあるもう一つのX軸(年数)が変化しません。
(下記のイメージで言うと月数は縦書きになるのですが、年数が横書きのままです)

年数も縦書きにする方法をおしえてください。


<イメージ>
Y軸は金額
X軸の1種類目(グラフエリアに近いほう)月数。2種類目(下段)は年数。

(y軸)
1000円

500円

0
    1月 2月 3月 1月 2月 3月
    2007年      2008年     (x軸)

→月数は縦書きになるのですが、年数の方を縦書きにする方法が分かりません。

Aベストアンサー

数値軸ラベルの事ですね。

それを右クリックして「書式設定」「配置」タブの左側の「文字列」が
縦になっているものを選択して、縦になりませんか。

フォントが大きくてグラフエリアに収まらない時もなりませんが。

最終手段としてグラフを選択状態で「縦書きテキストボックス」で入れたら
いかがでしょう。

ただ描画するより、次の方法がいいです。

グラフを選択し、数式バーをクリック。 = を入れ、使用する年号のセルを
クリックしてエンター。
これでグラフ内にテキストボックスがどこかに落ちるので、配置し、
右クリック「テキストボックスの書式設定」「配置」「方向」で縦を選択します。

セルの内容と連動します。

QC言語でグラフ作成

Σ[ {(-1)^n } * { cos (2nπx / L) } / n ]
(Lは定数で、Σのnの範囲は0~20です)
という関数をグラフ化したいのですが、C言語で可能なのでしょうか?? もともとC言語でグラフが描けるのかどうかも分かりません。もし描けるのであれば、教えてください。お願いします。

Aベストアンサー

Windowsなら、(x,y)の組み合わせを計算してファイルに書き出しておき、これをエクセルで呼び出してグラフ化するテがあります。
具体的にはyの値をコンマ区切りで"goo_kotae.csv"というテキストファイルに書き込みます。
"goo_kotae"の部分は適宜お考えください。

なおTcl/Tkという世界的なGUIプログラミングプラットホームがあって、無償配布しています。これはUNIX生まれですが、Windows版もMac版もLinux版もOS2版も用意されています。しかもC言語との親和性が非常に良いです。
グラフィック部分はTcl/Tkで記述し、計算部分をC言語で記述すると、Windows並みのきれいなグラフが描けます。
グラフ描画部分にはライブラリが揃っているので、データ列さえ与えれば、短期間で表示できると思います。
Tcl/Tkに関する質問は、OKWebへ提起すれば回答者はいますよ。実際に質問して確認しました。

Q【イラレ】系列が2種類ある場合のグラフ

うさぱんと申します。
イラストレーターのグラフの作り方で質問です。

以下のようなグラフを作る場合は
どのようにしたら良いでしょうか?
(よくある系列が1つのものは作れます。)

◆系列が2種類
一つのカテゴリに対し、
Aの数値とBの数値があり、隣あわせのグラフに
なる。


【制作環境】
OS/WIN XP
ソフト/illustratorCS
元データ/エクセルのグラフ

どうぞよろしくお願い致します。

Aベストアンサー

棒グラフを選び、データ入力は縦列に水1、水2、水3……、横行にサプリ1、サプリ2で入力でできませんか?
サンプル(エクセルデータ?)では逆に入力されていますが、同じように入力してしまったら、「行列置き換え」アイコンをクリックで変えられます。1系列はできるようですから、そんなことはないとは思いますが……
以上はバージョン10ですが、操作法が変わっているようならヘルプをご覧ください。

QC言語で画像を出力したい

C言語で画像を出力したい


ホントに初歩的な質問になるのですが、申し訳ありません。

私はC言語を使ってフーリエ変換(つまりsin波形とかスペクトルの出力)をしてみたいと思っています。
調べてみると「PGPLOT」というものが使いやすいと知ったので、インストールしたのですが、そこから先の設定の説明をみてもよくわかりません


このサイトに載っている青枠で囲まれた部分(#とかから始まる文章)は一体どこに記入してるのですか?


コマンドプロンプトに入力するのかなと思って実行したら

「'$' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」



とか、出てきます。どこの箇所の設定の説明なんですか?もしよろしければ可能な範囲でいいので教えてください。




自分は数値計算でしかC言語を使用してないので全然わかりません。でもこの説明も分かる人にはわかるんですよね?どういった参考書や勉強をしたらわかるようになるんですか?

それだけでもいいので教えてください。



ちなみにパソコンはwindowsを使っています。

C言語で画像を出力したい


ホントに初歩的な質問になるのですが、申し訳ありません。

私はC言語を使ってフーリエ変換(つまりsin波形とかスペクトルの出力)をしてみたいと思っています。
調べてみると「PGPLOT」というものが使いやすいと知ったので、インストールしたのですが、そこから先の設定の説明をみてもよくわかりません


このサイトに載っている青枠で囲まれた部分(#とかから始まる文章)は一体どこに記入してるのですか?


コマンドプロンプトに入力するのかなと思って実行したら

「'$' は、内部...続きを読む

Aベストアンサー

Windowsって言ってもcygwin上の開発環境だと思いますが
(VC用とかもあるみたいだけどちゃんと見てません)

要はプラットフォーム(開発環境)が異なります(整えられていません)
使える情報か(古いかも)確認まではしてませんが
以下を参考にしてみては
http://hooktail.sub.jp/cygwin/pgplot/


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング