aboutsummaryrefslogtreecommitdiffstats
path: root/examples/charts/dynamicspline
diff options
context:
space:
mode:
Diffstat (limited to 'examples/charts/dynamicspline')
-rw-r--r--examples/charts/dynamicspline/chart.py53
-rw-r--r--examples/charts/dynamicspline/doc/dynamicspline.rst15
-rw-r--r--examples/charts/dynamicspline/doc/dynamicspline1.pngbin0 -> 34292 bytes
-rw-r--r--examples/charts/dynamicspline/doc/dynamicspline2.pngbin0 -> 40347 bytes
-rw-r--r--examples/charts/dynamicspline/dynamicspline.pyproject3
-rw-r--r--examples/charts/dynamicspline/main.py28
6 files changed, 99 insertions, 0 deletions
diff --git a/examples/charts/dynamicspline/chart.py b/examples/charts/dynamicspline/chart.py
new file mode 100644
index 000000000..0858007f1
--- /dev/null
+++ b/examples/charts/dynamicspline/chart.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+from __future__ import annotations
+
+import random
+
+from PySide6.QtCharts import QChart, QSplineSeries, QValueAxis
+from PySide6.QtCore import Qt, QTimer, Slot
+from PySide6.QtGui import QPen
+
+
+class Chart(QChart):
+ def __init__(self, parent=None):
+ super().__init__(QChart.ChartTypeCartesian, parent, Qt.WindowFlags())
+ self._timer = QTimer()
+ self._series = QSplineSeries(self)
+ self._titles = []
+ self._axisX = QValueAxis()
+ self._axisY = QValueAxis()
+ self._step = 0
+ self._x = 5
+ self._y = 1
+
+ self._timer.timeout.connect(self.handleTimeout)
+ self._timer.setInterval(1000)
+
+ green = QPen(Qt.red)
+ green.setWidth(3)
+ self._series.setPen(green)
+ self._series.append(self._x, self._y)
+
+ self.addSeries(self._series)
+ self.addAxis(self._axisX, Qt.AlignBottom)
+ self.addAxis(self._axisY, Qt.AlignLeft)
+
+ self._series.attachAxis(self._axisX)
+ self._series.attachAxis(self._axisY)
+ self._axisX.setTickCount(5)
+ self._axisX.setRange(0, 10)
+ self._axisY.setRange(-5, 10)
+
+ self._timer.start()
+
+ @Slot()
+ def handleTimeout(self):
+ x = self.plotArea().width() / self._axisX.tickCount()
+ y = (self._axisX.max() - self._axisX.min()) / self._axisX.tickCount()
+ self._x += y
+ self._y = random.uniform(0, 5) - 2.5
+ self._series.append(self._x, self._y)
+ self.scroll(x, 0)
+ if self._x == 100:
+ self._timer.stop()
diff --git a/examples/charts/dynamicspline/doc/dynamicspline.rst b/examples/charts/dynamicspline/doc/dynamicspline.rst
new file mode 100644
index 000000000..e946447b7
--- /dev/null
+++ b/examples/charts/dynamicspline/doc/dynamicspline.rst
@@ -0,0 +1,15 @@
+Dynamic Spline Example
+======================
+
+This example shows how to draw dynamic data.
+
+You can check a simple animation of this example
+`here <https://qt-wiki-uploads.s3.amazonaws.com/images/thumb/f/f8/Dynamicspline.gif/300px-Dynamicspline.gif>`_.
+
+.. image:: dynamicspline1.png
+ :width: 400
+ :alt: Dynamic Spline Screenshot 1
+
+.. image:: dynamicspline2.png
+ :width: 400
+ :alt: Dynamic Spline Screenshot 2
diff --git a/examples/charts/dynamicspline/doc/dynamicspline1.png b/examples/charts/dynamicspline/doc/dynamicspline1.png
new file mode 100644
index 000000000..bcee80ed4
--- /dev/null
+++ b/examples/charts/dynamicspline/doc/dynamicspline1.png
Binary files differ
diff --git a/examples/charts/dynamicspline/doc/dynamicspline2.png b/examples/charts/dynamicspline/doc/dynamicspline2.png
new file mode 100644
index 000000000..595c38b1f
--- /dev/null
+++ b/examples/charts/dynamicspline/doc/dynamicspline2.png
Binary files differ
diff --git a/examples/charts/dynamicspline/dynamicspline.pyproject b/examples/charts/dynamicspline/dynamicspline.pyproject
new file mode 100644
index 000000000..bdd641930
--- /dev/null
+++ b/examples/charts/dynamicspline/dynamicspline.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["chart.py", "main.py"]
+}
diff --git a/examples/charts/dynamicspline/main.py b/examples/charts/dynamicspline/main.py
new file mode 100644
index 000000000..cbb5109f1
--- /dev/null
+++ b/examples/charts/dynamicspline/main.py
@@ -0,0 +1,28 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+from __future__ import annotations
+
+"""PySide6 port of the Dynamic Spline example from Qt v5.x"""
+import sys
+
+from PySide6.QtCharts import QChart, QChartView
+from PySide6.QtGui import QPainter
+from PySide6.QtWidgets import QApplication, QMainWindow
+
+from chart import Chart
+
+if __name__ == "__main__":
+
+ a = QApplication(sys.argv)
+ window = QMainWindow()
+ chart = Chart()
+ chart.setTitle("Dynamic spline chart")
+ chart.legend().hide()
+ chart.setAnimationOptions(QChart.AllAnimations)
+ chart_view = QChartView(chart)
+ chart_view.setRenderHint(QPainter.Antialiasing)
+ window.setCentralWidget(chart_view)
+ window.resize(400, 300)
+ window.show()
+
+ sys.exit(a.exec())