このページでは

日付と時刻の軸を持つ折れ線グラフ

注:これは 「ウィジェット付きグラフギャラリー」のサンプルの一部です。

1991年1月から2012年7月までの21年間にわたる統計データを示した折れ線グラフのスクリーンショット

例の動作確認

以下の手順でサンプルを実行できます:

折れ線グラフの作成

折れ線グラフを作成するには、QLineSeriesインスタンスが必要です。それでは、それを作成してみましょう。

auto series = new QLineSeries;

このグラフでは、太陽黒点数が時間とともにどのように変化するかを示します。データ(宇宙天気予報センター提供)はテキストファイルから読み込まれます。

以下のスニペットでは、QDateTime::toMSecsSinceEpoch メソッドを使用して、QDateTime オブジェクトを、QLineSeriesのappendメソッドに渡せる数値に変換している点に注目してください。

// data from http://www.swpc.noaa.gov/ftpdir/weekly/RecentIndices.txt
// http://www.swpc.noaa.gov/ftpdir/weekly/README
// http://www.weather.gov/disclaimer
QFile sunSpots(":sun_spots");
if (!sunSpots.open(QIODevice::ReadOnly | QIODevice::Text)) {
    m_loadError = QStringLiteral("Failed to load '%1' file.").arg(sunSpots.fileName());
    return false;
}

QTextStream stream(&sunSpots);
while (!stream.atEnd()) {
    QString line = stream.readLine();
    if (line.startsWith("#") || line.startsWith(":"))
        continue;
    QStringList values = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
    QDateTime momentInTime;
    momentInTime.setDate(QDate(values[0].toInt(), values[1].toInt() , 15));
    series->append(momentInTime.toMSecsSinceEpoch(), values[2].toDouble());
}
sunSpots.close();

データをチャート上に表示するには、QChartインスタンスが必要です。そこにシリーズを追加し、凡例を非表示にし、デフォルトの軸を作成し、チャートのタイトルを設定します。

auto chart = new QChart;
chart->addSeries(series);
chart->legend()->hide();
chart->setTitle("Sunspots count (by Space Weather Prediction Center)");

QLineSeriesを使用しているため、createDefaultAxesを呼び出すと、X軸とY軸の両方にQValueAxisが作成されます。QDateTimeAxisを使用するには、チャートに対して手動で設定する必要があります。まず、QDateTimeAxisのインスタンスを作成し、次に表示する目盛りの数を設定します。 黒点数は月ごとの平均値として提供されます。そのため、軸ラベルに日時に関する情報を含める必要はありません。これは、カスタムラベル形式を設定することで実現されます。利用可能な形式オプションについては、QDateTime::toString() メソッドのドキュメントを参照してください。

auto axisX = new QDateTimeAxis;
axisX->setTickCount(10);
axisX->setFormat("MMM yyyy");
axisX->setTitleText("Date");
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);

auto axisY = new QValueAxis;
axisY->setLabelFormat("%i");
axisY->setTitleText("Sunspots count");
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);

次に、QChartをパラメータとしてQChartViewオブジェクトを作成します。こうすることで、QGraphicsView シーンを自分で作成する必要がなくなります。また、レンダリングされた線をより見栄え良くするために、アンチエイリアシングを有効に設定します。

createDefaultChartView(chart);

これで、チャートを表示する準備が整いました。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.