none
グラフの作成について(目盛表示と描画スタイル) RRS feed

  • 質問

  • ロータリーエンコーダから取得した値をMP LABとシリアル通信を行って、その値をリアルタイムでvisual studioでグラフで表示しています。

    ダイアログボックスを作成して、そこにリアルタイムでグラフを表示させています。

    その時、横軸(x軸)と縦軸(y軸)の目盛りも表示させたいのですが、方法が分かりません。教えていただきたいです。

    又、折れ線グラフのように表示させたいのですが、オシロスコープのパルス波形のようになってしまいます。

    折れ線グラフにする方法も教えていただきたいです。

    なお、ロータリーエンコーダは正の回転で1周あたりcountが0~399となっています。(負の回転では-399~0)

    理想としては縦軸をcount数(範囲は-400~400、目盛間隔は何でもいいです)、横軸を経過時間(描画間隔は10ms)としたいです。

    宜しくお願い致します。

    2019年10月16日 7:23

すべての返信

  • 横軸を「時刻」とした場合、安定的に折れ線グラフを表示するためには、
    現在時刻の直近の観測値のバッファを持っていなければなりません。
    時刻の分解能にもよりますが、10[ms]でサンプルすると1[s]で100点、
    1分間分をバッファするなら6000点が必要になります。
    一点に対してその「時刻」と「観測値=Count」が必要です。

    リアルタイムとの事ですので10[ms]毎に観測点のバッファを更新するとともに、
    何らかのタイミングで描画を更新することになりますが、10[ms]での描画更新は頻繁過ぎます。
    従って、データをサンプルするタイマーとは別に、描画を更新するタイマー(暫定的に100[ms]程度)を用意してはどうでしょう。

    次に、データは秒間100点が更新されるというやや早い動作となるため、
    このバッファの構造は「リングバッファ構造」が適していると判断できます。

    また、デバッグ用に、観測データをファイルに保管する機能を付けたほうが良いかもしれません。

    横軸縦軸ですが、とりあえず 縦は8[100Count]×横は6[10S]の格子にしてみてはどうでしょう。

    2019年10月17日 1:56
  • 小生は、描画に焦点を絞って、逆に質問で恐縮ですが・・・、グラフに描画できる時間幅と、測定・描画を続けたい時間の長さって、どういう関係ですか?

    グラフの幅は十分であって、その中に納まる時間しか測定・描画しない? (1度だけ描画?)

    グラフの幅よりも長い時間の測定・描画になる? その場合、グラフからはみ出すわけですが、どのような表示の工夫を想定されてますか?
    古いデータを消して、上書きする? (何度も描画?)
    古いデータをスクロールさせつつ新しいデータを描く? (連続描画?)

    あと・・・、

    そもそも、描画を、全て独自でプログラムされようとしていますか?
    何か、グラフ描画のライブラリを使うことは想定されてませんか?

    2019年10月17日 4:21
  • ゆずっこさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    >ダイアログボックスを作成して、そこにリアルタイムでグラフを表示させています。
    →次のサンプルをご参照いただければと思います。
    https://social.msdn.microsoft.com/Forums/vstudio/en-US/06a9cea8-db05-4319-b201-1e3896c4a408/how-to-plot-line-chart-with-realtime-data-at-dialogbase-application?forum=vcgeneral

    https://www.codeguru.com/cpp/controls/controls/chartingandanaloguecontrols/article.php/c2223/Simple-Realtime-Class-for-Advanced-Charts-and-Plotting.htm

    >その時、横軸(x軸)と縦軸(y軸)の目盛りも表示させたいのですが、方法が分かりません。教えていただきたいです。
    →外池さんの意見に賛成します。
    グラフに描くことができる時間幅と、測定と描画を継続する時間の長さとの関係に注目する必要があります。

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


    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年10月21日 8:39
    モデレータ