ダイナミックプロットを使って自動的にy軸を変更したいと思います。私は、例で動的なプロットの例を変更し、多くの点を追加しました。新しい点が追加された後、プロットはy軸を調整して新しい最大値を考慮する必要があります。プロットが自動的にこれを行うことは可能ですか?QtCharts y軸の自動範囲
答えて
我々はこのために私たちは、それぞれ、最大値と最小値を格納する2つの変数を作成し、範囲を更新するために、一連の信号pointAddedを使用することができます。
connect(m_series, &QSplineSeries::pointAdded, [=](int index){
qreal y = m_series->at(index).y();
if(y< yMin || y > yMax){
if(y < yMin)
yMin = y;
if(y> yMax)
yMax = y;
axisY()->setRange(yMin-20, yMax+20);
}
});
完全なコードを:
chart.h
#ifndef CHART_H
#define CHART_H
#include <QtCharts/QChart>
#include <QtCore/QTimer>
QT_CHARTS_BEGIN_NAMESPACE
class QSplineSeries;
class QValueAxis;
QT_CHARTS_END_NAMESPACE
QT_CHARTS_USE_NAMESPACE
//![1]
class Chart: public QChart
{
Q_OBJECT
public:
Chart(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
virtual ~Chart();
public slots:
void handleTimeout();
private:
QTimer m_timer;
QSplineSeries *m_series;
QStringList m_titles;
QValueAxis *m_axis;
qreal m_step;
qreal m_x;
qreal m_y;
//new variables
qreal yMin;
qreal yMax;
};
//![1]
chart.cpp
#include "chart.h"
#include <QtCharts/QAbstractAxis>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QValueAxis>
#include <QtCore/QTime>
#include <QtCore/QDebug>
Chart::Chart(QGraphicsItem *parent, Qt::WindowFlags wFlags):
QChart(QChart::ChartTypeCartesian, parent, wFlags),
m_series(0),
m_axis(new QValueAxis),
m_step(0),
m_x(5),
m_y(1)
{
qsrand((uint) QTime::currentTime().msec());
QObject::connect(&m_timer, SIGNAL(timeout()), this, SLOT(handleTimeout()));
m_timer.setInterval(1000);
m_series = new QSplineSeries(this);
QPen green(Qt::red);
green.setWidth(3);
m_series->setPen(green);
m_series->append(m_x, m_y);
addSeries(m_series);
createDefaultAxes();
setAxisX(m_axis, m_series);
m_axis->setTickCount(5);
yMax = 10;
yMin = -5;
axisX()->setRange(0, 10);
axisY()->setRange(yMin, yMax);
connect(m_series, &QSplineSeries::pointAdded, [=](int index){
qreal y = m_series->at(index).y();
if(y< yMin || y > yMax){
if(y < yMin)
yMin = y;
if(y> yMax)
yMax = y;
axisY()->setRange(yMin-20, yMax+20);
}
});
m_timer.start();
}
Chart::~Chart()
{
}
void Chart::handleTimeout()
{
qreal x = plotArea().width()/m_axis->tickCount();
qreal y = (m_axis->max() - m_axis->min())/m_axis->tickCount();
m_x += y;
//m_y = qrand() % 5 - 2.5;
m_y = 50*(qrand() % 5 - 2.5);
m_series->append(m_x, m_y);
scroll(x, 0);
if (m_x == 100)
m_timer.stop();
}
動作しています、ありがとうございます:) –
メインウィンドウ(GUI)に追加しようとしましたが、できませんでした。また、タイマー用の信号/スロットも動作していません。接続はmain.cppでのみ実行されています、なぜですか?どこで間違いはありますか? MainWindow :: initChart() { Chart * chart = new Chart(); chart-> setTitle( "動的スプライン・チャート"); chart-> legend() - > hide(); chart-> setAnimationOptions(QChart :: AllAnimations); QChartView chartView(chart); chartView.setRenderHint(QPainter ::アンチエイリアス); QApplication :: connect(グラフ - > m_timer、QTimer :: timeout、chart、およびChart :: handleTimeout); } –
githubなどでコードを共有する – eyllanesc
私は、x軸に時間軸を追加しようとしましたが、私はできません。それは変わらないので、いつも同じです。どうして?
m_series->append(QDateTime::currentDateTime().toMSecsSinceEpoch(), m_y);
- 1. BarChartコントロールY軸範囲プラスパディング
- 2. Gnuplotのy軸範囲の編集
- 3. X、Y軸の設定範囲-JfreeChart
- 4. JfreeChartの自動スケールY軸
- 5. pChartを使用したY軸の特定の範囲と範囲
- 6. 軸の範囲
- 7. Gnuplot y軸の範囲の周波数を減らす
- 8. ハイチャート:y軸からの値(範囲内)の非表示/削除
- 9. y軸の範囲を縮小するGnuplot
- 10. y軸のカスタム範囲をRでプロットする
- 11. CanvasjsプロットをズームしてY軸の範囲を表示する
- 12. 複数のy軸範囲がプロットされている問題
- 13. ダイナミックデータ表示チャート:Y軸範囲を変更する
- 14. X軸上での自動ズームY軸ズーム
- 15. 価格表でYの範囲を自動的に調整する方法
- 16. Vis.jsデュアルY軸データの範囲の問題画像において
- 17. 列のY軸に24時間の範囲を設定する方法ハイチャート
- 18. これをggplotにプロットします。範囲内のy軸線の制御
- 19. JfreeChartを使用してY軸の範囲を設定する方法は?
- 20. y軸-dc.js複合線図の範囲を変更するには
- 21. グラフの動的y軸
- 22. 人力車でy軸を固定範囲に設定する方法は?
- 23. SQL Server GEOGRAPHY_GRID x&yの範囲
- 24. d3軸のズーム範囲の問題
- 25. ggplot2:log10の規模と軸の範囲
- 26. Apacheは二軸チャートのスーパーセットを使ってY軸の範囲を変更できますか?
- 27. x軸の範囲を持つパンダボックスプロット
- 28. d3.js x軸の日付範囲
- 29. MATLAB:範囲外のX軸プロット
- 30. に軸の範囲を拡張-1その軸がR
あなたは、私はそれについての画像を添付 – eyllanesc
をしようとしたかを示すことができました。 –
グラフが生成するコードを表示することができます。 – eyllanesc