問題タブ [vispy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python プログラムのシンプルな UI でリアルタイム グラフを表示するにはどうすればよいですか?
配列に格納されている 3 つのヒストグラムを更新する複雑なアルゴリズムがあります。アルゴリズムをデバッグしたいので、ユーザー インターフェイスで配列をヒストグラムとして表示することを考えていました。これを行う最も簡単な方法は何ですか。(迅速なアプリケーション開発は、最適化されたコードよりも重要です。)
Qt (C++) の経験と matplotlib の経験があります。
(この質問は 1 日か 2 日開いたままにしておきます。これは、私が持っていないより多くの経験がないと解決策を評価するのが難しいためです。コミュニティの投票が最良の回答を選択するのに役立つことを願っています。)
python - インタラクティブなデータの視覚化 - Python
Python を使用してデータの視覚化に取り組んできました。そのように考えるために、私は Matplotlib を使用して視覚化を取得してきました。しかし、今では、完全な GUI に加えて、よりインタラクティブな視覚化を提供する必要があります。Python でこれまでに行ったすべての作業を失うことなく、どうすればそのようなことを行うことができるのか、つまり、Python でそのようなことを行うためのツールがあるかどうか、または D3 などに行かなければならないかどうか疑問に思っています。 ここに私が達成しなければならないことの例があります。私は Web アプリを構築しているのではなく、優れた GUI とデータのやり取りを提供する必要があるだけです。
前もって感謝します。
linux - anaconda pythonでOpenGLをインポートするにはどうすればよいですか?
anaconda pythonでipythonノートブックを使用していますが、openglをインストールまたはインポートする方法がわかりません。誰でもこれを解決するのを手伝ってもらえますか? Linux xubuntuでanacondaを使用しています。下手な英語でごめんなさい。
python - pyqtgraph : PyQtGraph の複数の色
ArrayToQPath を使用して pyqtgraph で複数のチャネルを異なる色でプロットできますか?
python - VisPy で回転キューブの正面に画像を表示する
回転する立方体を示すために、この VisPy の例で遊んでみました。画像 (png など) を読み込んで、立方体の面の 1 つとして表示する方法はありますか?
python - Python または webgl の静的ノードを使用したネットワーク アニメーション
そのため、助けが必要な特定のタスクがありますが、その方法がわかりませんでした。固定された一連のネットワーク ノード間で関係を形成するためのモデルがあります。そこで、ある種の 2 次元または 3 次元グリッド上にすべてのノードのセットを表示するウィンドウまたはビジュアライゼーションをセットアップしたいと考えています。次に、タイムステップごとに、ノード間の最新の結合セットで視覚化ウィンドウを更新します。そのため、空間に配置された一連のノードから始めて、タイムステップごとにビジュアライゼーションによって新しいエッジが徐々に追加されます。
ここでの課題は、networkx のようなもので、タイムステップごとにネットワークを再描画してもうまくいかないことを私が知っていることです。一般的なネットワーク表示アルゴリズムの多くは、ノード間の距離を最大化し、エッジをより適切に表示するために、ノードをランダムに配置します。そのため、タイムステップごとにネットワークを再描画すると、ノードは毎回異なる場所に配置され、ネットワークの成長パターンを特定するのが難しくなります。そのため、一連の静的ノードが必要なため、各タイムステップでエッジがどのように追加されるかを確認できます。
一度に約 100 個のノードを視覚化しようとしています。そのため、20 程度の少数のノードから始めて、徐々に 100 ノードまで構築します。モデルが検証された後、1000 または 2000 ノードまで構築します。もちろん、1000 または 2000 ノードのネットワークを視覚化するのは難しいため、シミュレーションに 100 ノードしかないときにネットワークを視覚化できることを確認したいだけです。
これをwebglか何かでできるかどうか、またはPythonでこれを行う良い方法があるかどうかはわかりませんでした。必要に応じて、Python と webgl 間の通信に Vispy を使用できます。
python - 可能な限り高速な大規模配列のローテーション
私は Python に比較的慣れていないので、大規模な多次元配列を回転させるための最適化されたコードを探しています。次のコードでは、16X600000 32 ビットの浮動小数点多次元配列があり、タイマーによると、クアッド コアの acer Windows 8 タブレットでコンテンツを回転させるのに約 30 ミリ秒かかります。配列の回転に必要な時間を短縮できる場合は、いくつかの Cython ルーチンまたは同様のものを使用することを検討していました。
最終的に、このコードは、VisPy パッケージに基づく高速データ プロット グラフの y 軸値を格納するために使用され、32 ビット float 配列が OpenGL ルーチンに渡されます。できれば1ms以下を実現したいです。
コメント、推奨事項、またはサンプル コードをいただければ幸いです。
アップデート
私がやろうとしていることについて正確に混乱していると思うので、もう少し詳しく説明しようと思います.
最終的な目標は、信号値を表すグラフに線を引く、高速なリアルタイム データ ロギング デバイスを用意することです。複数のチャネルと、少なくとも 1 ミリ秒のサンプリング レートと、可能な限り多くの録音時間が存在します。この VisPy の例から始めました。新しいデータを配列に書き込み、それを OpenGL に送信する例のコードは、一番下のOn_Timer
関数にあります。このコードを少し変更して、OpenGL キャンバスを Qt gui に統合し、イーサネット ソケットを介して Arduino Mega からデータを取得するコードを追加しました。
現在、サンプリングレート約1ms、フレームレート約30Hz、記録時間約14秒で16ラインのリアルタイムグラフを作成できます。チャネル数または記録の長さをこれ以上増やそうとすると、イーサネット ポートから 1 ミリ秒で入ってくるデータの流れに追いつけないため、プログラムが動作を停止します。
y[:, :-1] = y[:, 1:]
これについて私が見つけることができる最大の原因は、ルーチンを使用してデータ バッファー シフトを完了するのにかかる時間です。もともと私は、誰かが同じことをより効率的な方法で行う方法を知っていることを期待して、この関数が時間を計っているベンチマーク コードを提出しました。この行の目的は、配列全体を 1 インデックス左にシフトし、次のコード行で右側の最初のスロットに新しいデータを書き込むことです。
以下に、変更したグラフ更新ルーチンを示します。最初にキューから新しいデータを取得して一時配列にアンパックし、次にメイン バッファー配列の内容をシフトし、最後に新しいデータをメイン配列の最後のスロットにコピーします。キューが空になると、OpenGL が表示を更新するように update 関数が呼び出されます。