CSVファイルを折れ線グラフ化するプログラムを作成

このQ&Aのポイント
  • 無料のVB2008を使用して、CSVファイルを折れ線グラフ化するプログラムを作成中です。
  • 今回はEXCELを使用せずにプログラムを作成したいため、VB2008を利用しています。
  • プログラムの流れは、指定したCSVファイルを開き、不要な行を削除して、グラフに表示することです。データベースを使用するかどうかは不明です。
回答を見る
  • ベストアンサー

CSVファイルを折れ線グラフ化するプログラムを作っているのですが・・・

CSVファイルを折れ線グラフ化するプログラムを作っているのですが・・・ 以前、似たようなものをEXCELのVBAでやったことはあります。 今回は、使用先PCにEXCELが無いので、EXCELを使わないでやりたいと思い、 無料のVB2008をMicrosoftから落としてきて、手探りで始めています。 :LOG :LOGGING_ID,3,"湿度" :SERIAL_ID,13 :DEVICE_NUM,3 :RECORD_NUM,100 :DEV_COMMENT,"NO.1 湿度","NO.2 湿度","外気湿度" :DEV_TYPE,BIN16,BIN16,BIN16 :DISP_TYPE,DEC,DEC,DEC :DEV_SIZE,1,1,1 2010/10/29 08:30:50,498,0,0 2010/10/29 08:31:49,498,0,0 2010/10/29 08:32:49,497,0,0 ・ ・ ・ 一日1ファイル、1分ごとに記録された湿度のデータが入ったCSVファイルです。 これを、   選択した日付のファイルを開き、   グラフ目盛を”1分ごと””10分ごと”、”1時間ごと”に   任意で変えて表示できる   折れ線グラフを作ろうとしています。 DateTimePickerを使って、日付の指定、該当ファイルの有無、などは出来ました。 ですが、その後の、するべき方向性がまったっく見えてきません。 (1)指定したCSVファイルを開く (2)一連の「:」行を削除 (3)先頭行に「,NO.1 湿度,NO.2 湿度,外気湿度,」を挿入 (4)指定した間隔分の行を抽出(10分ごとなら、00分、10分、20分、30分、40分、50分の行だけ抽出)  (指定間隔はRadiobuttonで選ばせようと思っています。) (5)作業用のCSVファイルとして保存 (4)Chartにて表示 こんな流れで合っていますか? データベースを使うんですか?(←SQLだのADOだの、必要なら、ゼロから覚えなければならない状態です) 参考書よんだり、webで調べたりしているのですが、 VBから直接、csvを編集(行の削除、挿入)が出来るのか、 そして、別ファイルとして保存できるのかが、見えません。 訳がわからなくなってしまいました。 EXCELを使えば、楽ちんなんですかね? ただ、EXCELでのVBAも、少しかじった程度なんですが。 なんとか道筋だけでも教えていただけたら、と思います。 お願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルでやれば、グラフを描くところは、エクセル(VBA)がやってくれるので、圧倒的に楽。 CSVファイルをオープン CSVレコードを1レコード読む 不要なレコードは読み飛ばす 時間間隔ごとに、該当レコード分は処理、それ以外は読み飛ばす(またはその間隔の平均なりを採る) レコードをSplit関数で、カンマ(ディミタ)で分離 シートに各行にデータを書き出す。シートの1行下をポイント。 次以下のレコードで上記を繰り返し Et ENDでCSVファイルをクローズ シートのデータを対象にグラフを描かせる。 エクセルでグラフを描かせるのはシートに、無駄のないでーたが一旦書き出されることが必要条件です。 このVBAでのコードがどうなるか、はグラフを描かせるマクロの記録から類推し、マクロの記録を修正する。ただデータ数が多いと実際的に使えるグラフになるか未経験で判らない。巻物みたいになったら、どうだろうか。 ーーー VB.NETでは、グラフを描くようなツールが無ければ(市販とか。購入する金が無ければ http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1420945259などで言っているコンポーネント)、 上記のCSVファイルの各レコード処理を行い(Splitまで)Imageコントロールに Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click Dim ChartLeft As Integer = 80 '左位置 Dim ChartRight As Integer = PictureBox1.Width - 50 '右位置 Dim ChartHeight As Integer = 50 '上方位置 Dim ChartLower As Integer = PictureBox1.Height - 10 '下方位置 Dim Graphics As System.Drawing.Graphics = PictureBox1.CreateGraphics Dim ChartAxis As New Pen(Color.Black, 2) Graphics.DrawLine(ChartAxis, ChartLeft, ChartHeight, ChartLeft, ChartLower) Graphics.DrawLine(ChartAxis, ChartLeft, ChartLower, ChartRight, ChartLower) Graphics.DrawLine(ChartAxis, ChartLeft + 30, ChartHeight + 30, ChartLeft + 40, ChartHeight + 10) Graphics.DrawLine(ChartAxis, ChartLeft + 40, ChartHeight + 10, ChartLeft + 60, ChartHeight + 70) Graphics.DrawLine(ChartAxis, ChartLeft + 60, ChartHeight + 70, ChartLeft + 90, ChartHeight + 100) End Sub WEBにあったコードを一部改変しました。3点を結ぶ折線の例(軸付き)。 この下3行の部分をCSVファイルを読んでカンマで分離したデータでデータ数だけ繰り返す。 しかし実際にやるには、諸々の多数の解決すべき点が出てくるのは目に見えている。多数データで 纏め上げた経験が無いので、実際役立つか判らない。 グラフには目盛や反例やタイトルなど必要だし、自作は面倒なことだろう。 ーーー Split関数は、VB.NETで http://www.atmarkit.co.jp/fdotnet/dotnettips/317vbsplit/vbsplit.html テキストファイルをVB.NETで読む http://www.cocoaliz.com/vb.net/index/25/  など Googleででも、トッピックスごとに照会する。

chintarou
質問者

お礼

お礼遅くなりました。 今回の件は、データベース化するほどのものではないと、知人に判断され、 時間もないことで、データベース化はあきらめました。 少し勉強が必要なので、がんばります。

関連するQ&A

  • 不定期・不定回数の気温を重ねて折れ線グラフにしたい

    ■エクセル:不定期・不定回数で毎日記録した気温を、日毎に折れ線グラフにして、重ねて表示したい Excelの折れ線グラフについて、アドバイスをお願い致します。 毎日、決まっていない時刻に、1日に何度も気温が記録されています。 記録したデータは、「日付」「測定時刻」「気温」の3列で、1ヶ月分が 1つのCSVファイルに保存されています。 1日単位の気温を、手で選択して折れ線グラフにしたり、月初から月末まで 繋がった1本の折れ線グラフにすることはできています。 しかし、この1つのCSVファイルにある1ヶ月分の気温の変化を  「1日のうち最初~最後の気温を折れ線グラフ1本」で  日々の折れ線グラフを、適切な時刻軸上に重ねて表示 したいのですが、なかなかうまくできません。 日毎の3列を選択して、グラフを作る→日毎のグラフを、コピー→貼り付け すると、重なったような折れ線グラフにはなるのですが、最後にペーストした日の測定時刻に偏ってしまい、1日の折れ線グラフとしては、綺麗に重なってくれません。 また、毎日の変化を手操作で折れ線グラフにして重ねるのは労力が必要なので、自動的に日ごとに集計して折れ線グラフにしたいです。 アドバイスを頂けますと幸いです。 データ例:(csvとxlsx) データイメージ:  日付 時刻 温度  7/31 21:50 29  7/31 19:35 30  7/31 19:08 31  7/31 17:20 35  7/31 16:53 36  7/31 12:23 34  7/31 10:08 33  7/31 9:41 32  7/31 6:05 29  7/31 1:35 28  7/30 22:26 29  7/30 18:50 33  7/30 16:34 39  7/30 10:43 32  7/30 7:07 29  7/29 23:01 28  7/29 18:31 34  7/29 15:21 37  7/29 14:54 36  7/29 10:51 32  7/29 9:30 31  7/29 7:42 29 (上記は間引きしてます。実際のデータは上記URLにアップロードしてあります) どうぞ宜しくお願い致します。

  • 折れ線グラフ

    Excelのグラフについて。 一旦0にリセットする折れ線グラフを作成できますでしょうか? 具体的には、 ある数値について 1月1日は0 1月末日は、任意の値(350など) 2月1日は0 2月末日は、任意の値(760など) 1年分、以下略 これらの値を棒グラフで示したいです。 その際、1月末日から2月1日までの折れ線を非表示にしたいです。 可能でしょうか? よろしくお願いします。 Excel2010以上

  • 折れ線グラフの回転移動

    やりたいことですが、 折れ線グラフのデータがCSVファイルで有ります、まずはそのデータを読みこんで折れ線グラフ化します、例えばそのデータが右肩上がりのデータだったとして始点の値と終点の値をなるべく近づけるのに終点の所をドラッグして(下方向に移動さす)始点の値に近づけます。そのときにすべてのデータが回転されてグラフデータも取得したいのですが。 フリーウェアかエクセルのアドイン(フリー)などでご存じ有りませんかご教授下さい。 イメージを画像にて添付します。 宜しくお願い致します。

  • エクセルで折れ線グラフを作りたいのですが

    エクセルで折れ線グラフを作りたいのですが    H6/1 H6/2 H6/3 H6/4 H6/5 H6/6 H6/7・・・・・・・・ 電気 7980 7600 6798 8000 7900 8760 8780・・・・・・・・ 水道 2345 5434 3233 2100 3423 3012 2300・・・・・・・・    H7/1 H7/2 H7/3 H7/4 H7/5 H7/6 H7/7・・・・・・・・ 電気 7980 7600 6798 8000 7900 8760 8780・・・・・・・・ 水道 2345 5434 3233 2100 3423 3012 2300・・・・・・・・ このように違う行に並んだデータを一つの折れ線グラフにまとめたい のですが方法を教えてください。

  • エクセル2003 折れ線グラフの表示について教えて下さい!

    エクセル2003で、縦棒グラフと折れ線グラフの複合グラフを作成しています。 折れ線グラフで、マーカーのみが表示され、線が表示されません。 データ系列の書式設定の中の「パターン」で、線の項目で指定しても表示されない状態です。 棒グラフが2本、折れ線グラフ4本を作成したいのですが、何か問題があるのでしょうか。

  • エクセルの折れ線グラフについて

    エクセル2007で折れ線グラフを使おうと考えています。 グラフの横軸を1分、あるいは30秒や15秒にして用いたいのですが、少数の入力方法しかなく、9分が0.00625という数値まではたどり着いたのですがそれ以降は割り切ることができずにうまく横軸に用いることができません。 横軸に時間を入れる方法を教えてください。

  • Excel の折れ線グラフ

    Excel 2007 で 折れ線グラフを作成する場合に、横軸(x軸)に置く項目を(自動ではなくて)任意に指定する方法を具体的に教えてください。自動だといつも 1 2 3 … となってしまうところを、たとえば 2 3 4 … としたいのですが・・・。 どなたか、具体的にわかり易く教えてください。お願いします。

  • 折れ線グラフの線分ごとに色を交互に変える。

    一本の折れ線グラフを描きます。 各折れ線の線分(このつながりが全体の折れ線になる)の偶数番目と奇数番目の色を変えたい。 他言語でグラフを書く場合は、各線分の色を指定できますが、excelの基本機能ではできないと思います。 VBAではこのようなことができるでしょうか。別途データ系列として各線分の色を与えることはできます。 折れ線グラフでなく、棒グラフとしても、各棒グラフの色を変える必要もあります(折れ線が可能なら、棒グラフも可能でしょう) excel-vbaの範囲でどんな可能性があるでしょうか。 可能性のありそうな方法例として、 偶数線分と奇数線分を分けて2系列のデータとします。 X軸だけを考えて、偶数線分の系列は、10-20、30-40、50-60・・・ 奇数線分の系列は20-30、40-50、60-70、・・・ のように描画できれば、それぞれを別の色を指定すればよいです。 これができれば3系列としてもできそうです。

  • データベース読み込み→折れ線グラフの作成

    こんにちは。最近Visual Basicにおけるプログラミングを始めた者です。 現在、Excelにて作成したcsv形式のアンケートデータを読み込み、Visual Basic5.0 にて折れ線グラフに表示するものを作ろうと思っています。 どのようなデータベースかというと、 15種類の質問項目のそれぞれに7種類の選択式回答があり、その回答番号(1~7)を横並びにしたものです。 csvファイルの中身は 氏名,1,3,2,7,4,5,・・・・ といった形になっています 数字は15個並んでいます このデータをそれぞれの質問項目ごとに折れ線グラフにし、可視化したいと思っております。 この選択肢は4番の回答が多い、この選択肢は2番の回答が多い・・・といったことが見分けやすいと思ったので。 上記のようなことは可能でしょうか。 厚かましいようですが、もしよろしければサンプルとなるコードをお添え頂ければ幸いです。

  • エクセル2013 折れ線グラフ タイトルについて

    Excel、ソフトは2013で、マイクロソフト7です。 折れ線グラフを作成しています。 タイトルが長くて1行で書くこと出来ません。タイトルの枠の長さを調整(規定の長さよりも一文字でも)できないのですか? フォントサイズを小さくするとか、2行に書き改める以外に、タイトルの長さを少し長くしたいのです。 教えてください。お願いします。