質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

gnuplot

gnuplot(ニュープロット)は、2次元や3次元のグラフ作成ができるソフトウェアです。さまざまな数式やデータ集計などのグラフを描写することが可能で、特に2次元グラフを描画する機能は強力です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

意見交換

クローズ

20回答

1489閲覧

データセットをグラフ化する手段

sigefuji

総合スコア125

VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

gnuplot

gnuplot(ニュープロット)は、2次元や3次元のグラフ作成ができるソフトウェアです。さまざまな数式やデータ集計などのグラフを描写することが可能で、特に2次元グラフを描画する機能は強力です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/03/05 03:42

0

0

テーマ、知りたいこと

x軸データとy軸データの並びがセットされているtextファイルの組が100組ほどあります。
これを折れ線グラフ化して次のような条件で印刷したいのですが、どんな手段があるか相談したいです。

背景、状況

条件
・各グラフのy軸は一定範囲にあるが、x軸は16倍ほどのスケーリング範囲にある。
・グラフは横長で、横幅は一定の幅で揃える。x軸でスケーリングする。
・横幅一定のグラフを、縦にできるだけ長く、用紙当たり一定の数で何枚かの用紙にプリントする。
・データの条件によって、折れ線の一部に色とかマークをつけたい。
・元データの出所は、C++になりますが、ファイル渡しで、plot、プリントは別処理でよい。

想定した手段
・なにか適当なグラフ描画ツールを使う。
・GNUplot
・C++のchartクラス
・Pythonのグラフ機能

いずれも、ゼロからつくるのでなくサンプルなどを探してなんとかできるかなと思いますが、3番目、4番目の条件をどのようにクリアできるかで、
難易度が変わるかと思います。
他の手段を含めて、どんな手段が簡単でしょうか。当人のスキルによりますのが、アイデアを頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答20

#1

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/03/05 03:57

.NET Framework の Windows Forms および ASP.NET Web アプリ用であれば Chart というのがあります。

イメージ説明

興味があれば、Windows Forms 用ならサンプル(上の画像がそれ)を入手できるので試してみてはいかがですか? 詳しくは以下の記事を見てください。

Windows Forms 用 Chart Samples
http://surferonwww.info/BlogEngine/post/2021/11/30/chart-samples-for-windows-forms-application.aspx

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

meg_

総合スコア10580

投稿2023/03/05 06:17

・横幅一定のグラフを、縦にできるだけ長く、用紙当たり一定の数で何枚かの用紙にプリントする。

プロッターを使用すれば「縦にできるだけ長く」が実現できそうですが、プリンターの制約はあるのでしょうか?

想定した手段
・なにか適当なグラフ描画ツールを使う。
・GNUplot
・C++のchartクラス
・Pythonのグラフ機能

質問者さんが精通している方法をまずは試すのが良いかと思います。
「なにか適当なグラフ描画ツール」については有料/無料の制約等有りますか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

sigefuji

総合スコア125

投稿2023/03/05 08:33

#1 ご紹介ありがとうございます。
面白そうなので、概要でもみようかと思いましたが、
その段階で、色々前準備が要りそうで(UNPKGなど)、概要もつかみかねています。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

sigefuji

総合スコア125

投稿2023/03/05 08:37

#2 ご返事ありがとうございます。
さすがにプロッターはないですが、A4でプリントし、離れてプリントせざるを得ない場合は、そのままでもよしとします。
この課題には無料ベースです。

そうですね、自分がやれそうなところをやるのがもっともなことですね、

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

dameo

総合スコア943

投稿2023/03/05 09:13

確認できてない妄想です。

  1. C++でcsv出力
  2. pythonのpandasで読み込み、matplotlibでplotしたデータをsvg出力
  3. svgにしたデータをpdfでポスター印刷出力(←ここは探す)
  4. pdfを印刷

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#6

sigefuji

総合スコア125

投稿2023/03/05 09:48

#5 ご返事ありがとうございます。
pythonならpandas(使ったことないですが、聞いたことはあります)でスケーリングまでやるのでしょうか。
matplotlibからは、直接プリントはできず、PDFにしたほうがベターなのですね。
参考になります。
ただ処理プラットホームが増えますね。txt(csvも)を読んで、 っプロットまでできるとよいですが、いろんな情報を付加するのが難しいですか。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#7

dameo

総合スコア943

投稿2023/03/05 10:15

#6

pandas(使ったことないですが、聞いたことはあります)でスケーリングまでやるのでしょうか

スケーリングって何ですか?目盛りを打つこと?何倍かすること?それ以外の意味?
アイデア募集でないなら質問を取り下げてください。
回答する気はないので、自分で調べましょう。

matplotlibからは、直接プリントはできず、PDFにしたほうがベターなのですね

印刷したいと思ったことがないので印刷できないかどうか知りませんが、pdfならプリンタに依らず汎用です。

処理プラットホームが増えますね

増やしたつもりないですけど。

いろんな情報を付加するのが難しい

svgは編集できるし、文書に取り込むことも可能です。その文書をpdfに印刷して、それをさらにpdfでポスター印刷出力してもいいと思います。まあそもそもX軸の範囲を分けてグラフ自体を複数にした方が見やすい気もしますが。

全体的にやりたいこともアバウトにしか決まっておらず、実現手段の調査も不十分で、自分でやったことがあることもほとんどなさそう、だと、「そもそも(あなたに)出来るの?」という疑問が中心にあってアイデア以前の気もします。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#8

sigefuji

総合スコア125

投稿2023/03/05 11:20

#6
いろいろ情報をありがとうございます。
質問ではまだ漠然としているので、意見をお伺いして、マッチしていそうなものをえらぶ参考にしたいのが趣旨です。
これがまずければ、すみません。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#9

sigefuji

総合スコア125

投稿2023/03/05 11:22

皆様からいろいろな意見を頂きましたので、このあたりで、終了にしたいとおもいます。ありがとうございました。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#10

dameo

総合スコア943

投稿2023/03/05 11:34

質問ではまだ漠然としている

なら、明確にまずいです。意見をうかがう以前の話で、マッチするかどうかの判断などできない状態ですよ。

最低でも他人に聞くなら、アイデアを聞いた以上、全てに「簡単な」サンプルコードを書いて提出くらいの意気込みはほしいですね。可能であれば即日です。それくらいの実力があれば、やりたいことが不明確でも、柔軟に取捨選択可能かと思います。

やりたいこともハッキリしておらず、できることもほとんどないのに、アイデアだけ聞いて取捨選択とか無理ではないですか?おんぶにだっこでやってもらってるだけになってしまいます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#11

sigefuji

総合スコア125

投稿2023/03/05 12:00

編集2023/03/05 12:03

#10
今回のような内容では、まだ具体的なプログラムではないので、質問にはできなかったのですが、掲示板の趣旨に添わなかったのであればお詫びします。今後注意いたします。

翻って、今回の場合ではteratailではどんなことが可能ですか。
すべての方法を試してからでは、効率が悪いので、そのように考えました。

アイデアだけ聞いて取捨選択とか無理か否かは当方で考えることだと存じますが。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#12

dameo

総合スコア943

投稿2023/03/05 12:33

編集2023/03/05 12:34

#11
効率が悪いのはあなただけであって、私たちはあなたの効率を上げるために意見を述べたり回答してるわけではありません。そもそも私たちはあなたのために「時間を割いて」おり、効率が悪いんですけどね。あなた以外の人間があなたのための道具か何かなら、或いは対価を支払っているならそう考えるのもいいのですが、実際にはそうではありません。

アイデアだけ聞いて取捨選択ができるというのは、ちゃんとそれらを聞いて具体的に検討し、比較吟味した上で、目的とする条件を(場合によっては動かしながら)満たすか否かを判断できるという前提がないと成立せず、全てを他人に頼るあなたの実力ではとてもじゃないけど成立しないのですよ。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#13

dameo

総合スコア943

投稿2023/03/05 14:56

サンプル

svgはすっ飛ばしましたが、気象庁が出している地震データのプロットをして、A4縦を横に16枚並べるポスター印刷用pdfを出力させてみました。

csvファイルのダウンロード

https://www.data.jma.go.jp/eqev/data/kyoshin/jishin/1806180758_osakafu-hokubu/index.html
から
https://www.data.jma.go.jp/eqev/data/kyoshin/jishin/1806180758_osakafu-hokubu/data/acc20180618000177029.csv
をダウンロードしてください。

pipでパッケージインストール

cmd

1pip install pandas matplotlib pdftools.pdfposter

※必要ならvenvなどの仮想環境からインストールしてください

csvのプロットと横長pdfの生成

python

1# pip install pandas matplotlib pdftools.pdfposter 2# https://www.data.jma.go.jp/eqev/data/kyoshin/jishin/1806180758_osakafu-hokubu/index.html 3# https://www.data.jma.go.jp/eqev/data/kyoshin/jishin/1806180758_osakafu-hokubu/data/acc20180618000177029.csv 4import pandas as pd 5import matplotlib.pyplot as plt 6df = pd.read_csv('acc20180618000177029.csv', skiprows=6, encoding='cp932') 7df.plot(figsize=(133, 12)) 8plt.subplots_adjust(left=0.01, right=0.99, bottom=0.05, top=0.95) 9plt.savefig('image.pdf') 10# pdfposter -p 16x1a4 image.pdf out.pdf

image.pdfが横長pdfです。

ポスター印刷用pdfの生成

cmd

1pdfposter -p 16x1a4 image.pdf out.pdf

out.pdfがポスター印刷用pdfです。

最後に

アイデアを元にこういうサンプルをサクサク作れることが大事。
比較・検証が出来ないので。
細かいことは気にしないでいい。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#14

KojiDoi

総合スコア13671

投稿2023/03/06 08:37

R言語+tidyverseか、python+pandasのどちらかが実際的でしょう。挙げられているような細かい調整をしつつグラフを画像ファイルとして出力するところまで確実に出来ることだけは確かです。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#15

sigefuji

総合スコア125

投稿2023/03/07 06:12

#13 dameoさん
ご丁寧に(手間をかけていただいて)ポスターツールを説明ありがとうございます。
SVg(なにかはわかりませんが)も使えば編集などもできるのでしょうが、
ポスターツールのビデオガイドも少し見ましたが、全体の作業が必要性に対して、少々学ぶことが多そうです。
従いまして、候補からは除かせていただきます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#16

sigefuji

総合スコア125

投稿2023/03/07 06:16

#14kojidoiさん
やるとしますと、この中ではやはりpython+panndasがなじめそうです。
ご意見ありがとうございます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#17

sigefuji

総合スコア125

投稿2023/03/07 06:20

#2megさん

このスレッドを閉じたいのですが、ベストアンサーを選ぶ必要があるようですが、方法がわかりません。
<質問者さんが精通している方法をまずは試すのが良いかと思います。>
いろいろ皆さんからご意見を伺いましたが、やはり、これに尽きるかと思い、ベストアンサーにしたいのです。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#18

dameo

総合スコア943

投稿2023/03/07 06:35

#15
適当だからほとんど手間はかかってません。ただ内容は何一つ伝わっていないようですね。

全てを他人に頼るあなたの実力ではとてもじゃないけど

取捨選択は無理ですよ。あなたの好みと勘と気分でどうするか?という誰のためにもならない話ではなく、あくまで対象のスキルレベルに応じて、条件を満たす手段をアイデアから選択するための意見交換の場なんですよ。

一言で言えばあなた以外の誰かのためになる情報でないといけません。そのためには「具体的に検討し、比較吟味」が必要です。最低限同じレベルの比較対象がなければ、不可能な話なわけです。そしてアイデアからそこまで昇華する責任があるのは質問者である、「あなた」になります。他の人に聞いてるのはアイデアだけなのでね。

ご理解頂けましたか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#19

KojiDoi

総合スコア13671

投稿2023/03/07 06:39

#17

Q&Aと違い、意見交換は質問者の側からクローズできないようです。ベストアンサーは選べないし、選ぶ必要もありません。
https://teratail.com/help#about-discussion-closed

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#20

sigefuji

総合スコア125

投稿2023/03/07 09:24

#19 kojidoiさん
システムを理解しておらず、安易に投稿してしまいました。お詫びします。
それではやむを得ませんので放置せざるをえないですね。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問