QuickGraphLib 0.1.0a8__tar.gz → 0.1.0a9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/CMakeLists.txt +1 -1
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/PKG-INFO +16 -5
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/Axis.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ColorMaps.cpp +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphArea.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/AxHLine.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/AxHSpan.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/AxVLine.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/AxVSpan.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/BasicLegend.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/BasicLegendItem.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/CMakeLists.txt +1 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/ColorMesh.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/Contour.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/GraphItemDragHandler.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/Grid.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/Histogram.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/Line.qml +1 -13
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/Marker.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ImageView.cpp +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/PreFabs/ImageAxes.qml +5 -3
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/PreFabs/XYAxes.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ScalingContainer.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ShapeRepeater.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/TickLabel.qml +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ZoomPanHandler.qml +3 -1
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/__init__.py +3 -2
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/_version.py +1 -1
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/CMakeLists.txt +4 -4
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/pyigen.py +1 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/contours.py +11 -4
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/graphstructure.qdoc +81 -0
- quickgraphlib-0.1.0a9/QuickGraphLib/doc/interaction.qdoc +43 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/python_helpers.qdoc +2 -0
- quickgraphlib-0.1.0a9/README.md +36 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/ci/setup_qt.py +5 -5
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/docs/build_docs.py +1 -1
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/docs/config.qdocconf +1 -1
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/docs/style.css +21 -4
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/AllTheAxes.qdoc +2 -0
- quickgraphlib-0.1.0a9/examples/BasicHistogram.qdoc +15 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicSinGraph.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicSinGraphNoPrefabs.qdoc +3 -3
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BuiltinColormaps.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BuiltinColormaps.qml +3 -3
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ColorMappedImages.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ColorMappedImages.qml +0 -2
- quickgraphlib-0.1.0a9/examples/ColorMesh.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ColorMesh.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Complex.qdoc +2 -0
- quickgraphlib-0.1.0a9/examples/Contours.qdoc +17 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Conway.qdoc +4 -2
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Conway.qml +8 -4
- quickgraphlib-0.1.0a9/examples/DarkSinGraph.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/DarkSinGraph.qdoc +8 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/DraggableRegion.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ImageAlignment.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/InvertedAxes.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ReadoutLine.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ScalingGraph.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Scatter.qdoc +2 -0
- quickgraphlib-0.1.0a9/examples/Scatter.qml +35 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/SpansAndLines.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Subgraphs.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/TwinX.qdoc +2 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ZoomableAsImage.qdoc +2 -0
- quickgraphlib-0.1.0a9/examples/ZoomableAxes.qdoc +19 -0
- quickgraphlib-0.1.0a9/examples/__init__.py +4 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/conway.py +13 -13
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/gallery.py +1 -2
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/pyproject.toml +10 -11
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/requirements.txt +5 -5
- quickgraphlib-0.1.0a9/tests/__init__.py +4 -0
- quickgraphlib-0.1.0a9/tests/fonts/DejaVuSans-Bold.ttf +0 -0
- quickgraphlib-0.1.0a9/tests/fonts/DejaVuSans-BoldOblique.ttf +0 -0
- quickgraphlib-0.1.0a9/tests/fonts/DejaVuSans-Oblique.ttf +0 -0
- quickgraphlib-0.1.0a9/tests/fonts/DejaVuSans.ttf +0 -0
- quickgraphlib-0.1.0a9/tests/fonts/LICENSE +187 -0
- quickgraphlib-0.1.0a9/tests/reference_images/AllTheAxes.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/AllTheAxes.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/AllTheAxes.svg +1376 -0
- quickgraphlib-0.1.0a9/tests/reference_images/AllTheAxes_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicHistogram.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicHistogram.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicHistogram.svg +777 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicHistogram_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraph.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraph.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraph.svg +740 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraphNoPrefabs.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraphNoPrefabs.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraphNoPrefabs.svg +719 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraphNoPrefabs_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BasicSinGraph_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BuiltinColormaps.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BuiltinColormaps.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BuiltinColormaps.svg +3069 -0
- quickgraphlib-0.1.0a9/tests/reference_images/BuiltinColormaps_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMappedImages.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMappedImages.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMappedImages.svg +188 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMappedImages_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMesh.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMesh.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMesh.svg +852 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ColorMesh_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Complex.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Complex.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Complex.svg +1325 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Complex_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Contours.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Contours.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Contours.svg +924 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Contours_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Conway.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Conway.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Conway.svg +1090 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Conway_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DarkSinGraph.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DarkSinGraph.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DarkSinGraph.svg +740 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DarkSinGraph_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DraggableRegion.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DraggableRegion.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DraggableRegion.svg +726 -0
- quickgraphlib-0.1.0a9/tests/reference_images/DraggableRegion_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ImageAlignment.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ImageAlignment.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ImageAlignment.svg +623 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ImageAlignment_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/InvertedAxes.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/InvertedAxes.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/InvertedAxes.svg +730 -0
- quickgraphlib-0.1.0a9/tests/reference_images/InvertedAxes_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ReadoutLine.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ReadoutLine.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ReadoutLine.svg +673 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ReadoutLine_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ScalingGraph.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ScalingGraph.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ScalingGraph.svg +771 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ScalingGraph_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Scatter.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Scatter.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Scatter.svg +210680 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Scatter_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/SpansAndLines.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/SpansAndLines.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/SpansAndLines.svg +785 -0
- quickgraphlib-0.1.0a9/tests/reference_images/SpansAndLines_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Subgraphs.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Subgraphs.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Subgraphs.svg +1720 -0
- quickgraphlib-0.1.0a9/tests/reference_images/Subgraphs_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/TwinX.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/TwinX.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/TwinX.svg +805 -0
- quickgraphlib-0.1.0a9/tests/reference_images/TwinX_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAsImage.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAsImage.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAsImage.svg +765 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAsImage_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAxes.dat +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAxes.png +0 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAxes.svg +1423 -0
- quickgraphlib-0.1.0a9/tests/reference_images/ZoomableAxes_grab.png +0 -0
- quickgraphlib-0.1.0a9/tests/test_exports.py +161 -0
- quickgraphlib-0.1.0a8/QuickGraphLib/doc/interaction.qdoc +0 -13
- quickgraphlib-0.1.0a8/README.md +0 -25
- quickgraphlib-0.1.0a8/examples/BasicHistogram.qdoc +0 -13
- quickgraphlib-0.1.0a8/examples/ColorMesh.png +0 -0
- quickgraphlib-0.1.0a8/examples/Contours.qdoc +0 -13
- quickgraphlib-0.1.0a8/examples/DarkSinGraph.png +0 -0
- quickgraphlib-0.1.0a8/examples/Scatter.qml +0 -28
- quickgraphlib-0.1.0a8/examples/ZoomableAxes.qdoc +0 -13
- quickgraphlib-0.1.0a8/setup.cfg +0 -2
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/.clang-format +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/.gitignore +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/.pre-commit-config.yaml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/LICENCE +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/AntialiasingContainer.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/CMakeLists.txt +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ColorMaps.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/DataTypes.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/DataTypes.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/helpers/GridHelper.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/helpers/GridHelper.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/helpers/HistogramHelper.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/GraphItems/helpers/HistogramHelper.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/ImageView.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/Plugin.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/PreFabs/CMakeLists.txt +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/QuickGraphLib.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/Bindings.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/Bindings.xml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/ShibokenHelpers.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/ShibokenHelpers.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/bindings/glue/DataTypes.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/consts.py +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/AxesGridLayout.drawio +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/AxesGridLayout.svg +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/export.qdoc +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/graphitems.qdoc +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/index.qdoc +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/module-cpp.qdoc +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/module.qdoc +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/doc/prefabs.qdoc +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/helpers/AxisHelper.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/helpers/AxisHelper.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/helpers/Foreign.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/helpers/Helpers.cpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/helpers/Helpers.hpp +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/QuickGraphLib/py.typed +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/activate_venv.ps1 +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/ci/find_qt.py +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/AllTheAxes.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/AllTheAxes.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicHistogram.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicHistogram.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicSinGraph.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicSinGraph.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicSinGraphNoPrefabs.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BasicSinGraphNoPrefabs.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/BuiltinColormaps.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ColorMappedImages.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ColorMesh.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Complex.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Complex.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Contours.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Contours.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Conway.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/DarkSinGraph.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/DraggableRegion.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/DraggableRegion.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ExampleGallery.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ExampleGallery.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ImageAlignment.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ImageAlignment.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/InvertedAxes.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/InvertedAxes.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ReadoutLine.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ReadoutLine.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ScalingGraph.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ScalingGraph.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Scatter.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/SpansAndLines.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/SpansAndLines.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Subgraphs.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/Subgraphs.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/TwinX.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/TwinX.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ZoomableAsImage.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ZoomableAsImage.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ZoomableAxes.png +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/examples/ZoomableAxes.qml +0 -0
- {quickgraphlib-0.1.0a8 → quickgraphlib-0.1.0a9}/setup_venv.ps1 +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: QuickGraphLib
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a9
|
|
4
4
|
Summary: A scientific graphing library for QtQuick
|
|
5
5
|
Author-Email: Matthew Joyce <matthew.joyce@refeyn.com>
|
|
6
6
|
License: MIT License
|
|
@@ -38,8 +38,9 @@ Project-URL: Homepage, https://github.com/refeyn/QuickGraphLib
|
|
|
38
38
|
Project-URL: Issues, https://github.com/refeyn/QuickGraphLib/issues
|
|
39
39
|
Project-URL: Documentation, https://refeyn.github.io/QuickGraphLib
|
|
40
40
|
Project-URL: Source, https://github.com/refeyn/QuickGraphLib
|
|
41
|
-
Requires-Dist: PySide6
|
|
41
|
+
Requires-Dist: PySide6==6.8.0.2
|
|
42
42
|
Requires-Dist: contourpy
|
|
43
|
+
Requires-Dist: numpy<2
|
|
43
44
|
Requires-Dist: black; extra == "analyse"
|
|
44
45
|
Requires-Dist: pylint; extra == "analyse"
|
|
45
46
|
Requires-Dist: mypy; extra == "analyse"
|
|
@@ -48,8 +49,7 @@ Requires-Dist: lxml; extra == "analyse"
|
|
|
48
49
|
Requires-Dist: pytest; extra == "analyse"
|
|
49
50
|
Requires-Dist: pytest-cov; extra == "analyse"
|
|
50
51
|
Requires-Dist: scikit-build-core; extra == "analyse"
|
|
51
|
-
Requires-Dist: shiboken6_generator==6.
|
|
52
|
-
Requires-Dist: PySide6==6.5.3; extra == "analyse"
|
|
52
|
+
Requires-Dist: shiboken6_generator==6.8.0.2; extra == "analyse"
|
|
53
53
|
Requires-Dist: setuptools_scm; extra == "analyse"
|
|
54
54
|
Provides-Extra: analyse
|
|
55
55
|
Description-Content-Type: text/markdown
|
|
@@ -61,6 +61,7 @@ A scientific graphing library for [QtQuick](https://doc.qt.io/qt-6/qtquick-index
|
|
|
61
61
|
Links:
|
|
62
62
|
- [Online documentation](https://refeyn.github.io/QuickGraphLib)
|
|
63
63
|
- [PyPI page](https://pypi.org/project/QuickGraphLib/)
|
|
64
|
+
- [Pre-built artefacts](https://github.com/refeyn/QuickGraphLib/releases/latest)
|
|
64
65
|
|
|
65
66
|
Key advantages:
|
|
66
67
|
|
|
@@ -75,7 +76,17 @@ Key advantages:
|
|
|
75
76
|
The example gallery can be run using (provided the Python environment has [PySide6](https://pypi.org/project/PySide6/) and [contourpy](https://pypi.org/project/contourpy/) installed):
|
|
76
77
|
|
|
77
78
|
```bash
|
|
78
|
-
python examples
|
|
79
|
+
python examples/gallery.py
|
|
79
80
|
```
|
|
80
81
|
|
|
81
82
|
<p align="center"><img src="https://github.com/refeyn/QuickGraphLib/assets/103422031/56fdff62-ef77-4184-9f43-59a76b92d728" width="80%"></p>
|
|
83
|
+
|
|
84
|
+
## Qt version compatibility
|
|
85
|
+
|
|
86
|
+
This version of QuickGraphLib is compatible with Qt and PySide6 6.8.0. If you use this module from C++, then Qt's ABI stability guarantees means the compiled binaries will work for any Qt version >= 6.8 and < 7.0. If you use this module from Python, there are some additional features that rely on the PySide6 library version. Therefore the PySide6 version must be 6.8.0.2 exactly. Other 6.8 versions of PySide6 may work, but there are no guarantees.
|
|
87
|
+
|
|
88
|
+
The pre-built wheels aim to be compatible with the most recent recent Qt LTS version, which is currently 6.8. Pre-built wheels for higher non-LTS Qt versions will likely be available once Qt 6.9 is released.
|
|
89
|
+
|
|
90
|
+
## Python version compatibility
|
|
91
|
+
|
|
92
|
+
QuickGraphLib is compatible with the same Python versions and glibc versions that PySide6 is. For PySide6 6.8, the minimum Python version is 3.9.
|
|
@@ -11,6 +11,8 @@ import QuickGraphLib as QuickGraphLib
|
|
|
11
11
|
\brief Display a colorized image from a 2D array.
|
|
12
12
|
|
|
13
13
|
\note This graph item does not inherit from ShapePath, unlike other graph items.
|
|
14
|
+
|
|
15
|
+
\sa {Color mesh}, {Color mapped images}
|
|
14
16
|
*/
|
|
15
17
|
|
|
16
18
|
QuickGraphLib.ImageView {
|
|
@@ -13,19 +13,7 @@ import QuickGraphLib as QuickGraphLib
|
|
|
13
13
|
|
|
14
14
|
Graph a line using a list of X,Y points. The style of the line can be adjusted using the \l {ShapePath::strokeColor} {strokeColor} and \l {ShapePath::strokeWidth} {strokeWidth} properties.
|
|
15
15
|
|
|
16
|
-
\
|
|
17
|
-
GraphArea {
|
|
18
|
-
id: grapharea
|
|
19
|
-
viewRect: Qt.rect(-20, -1.1, 760, 2.2)
|
|
20
|
-
|
|
21
|
-
Line {
|
|
22
|
-
dataTransform: grapharea.dataTransform
|
|
23
|
-
path: Helpers.linspace(0, 720, 100).map(x => Qt.point(x, Math.sin(x / 180 * Math.PI)))
|
|
24
|
-
strokeColor: "red"
|
|
25
|
-
strokeWidth: 2
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
\endqml
|
|
16
|
+
\sa {Basic sin graph}
|
|
29
17
|
*/
|
|
30
18
|
|
|
31
19
|
QQS.ShapePath {
|
|
@@ -11,6 +11,8 @@ import QuickGraphLib.GraphItems as QGLGraphItems
|
|
|
11
11
|
\inqmlmodule QuickGraphLib.PreFabs
|
|
12
12
|
\inherits QuickGraphLib::AntialiasingContainer
|
|
13
13
|
\brief Displays an image with axes and a colorbar.
|
|
14
|
+
|
|
15
|
+
\sa {Color mesh}
|
|
14
16
|
*/
|
|
15
17
|
|
|
16
18
|
QuickGraphLib.AntialiasingContainer {
|
|
@@ -149,9 +151,9 @@ QuickGraphLib.AntialiasingContainer {
|
|
|
149
151
|
property var colors: QuickGraphLib.ColorMaps.colors(root.colorMesh.colormap)
|
|
150
152
|
|
|
151
153
|
stops: colors.map((color, i) => gradStop.createObject(grad, {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
154
|
+
"color": color,
|
|
155
|
+
"position": i / (colors.length - 1)
|
|
156
|
+
}))
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
159
|
QuickGraphLib.Axis {
|
|
@@ -11,6 +11,8 @@ import QuickGraphLib.GraphItems as QGLGraphItems
|
|
|
11
11
|
\inqmlmodule QuickGraphLib.PreFabs
|
|
12
12
|
\inherits QuickGraphLib::AntialiasingContainer
|
|
13
13
|
\brief Displays an XY axis with a grid.
|
|
14
|
+
|
|
15
|
+
\sa {Basic sin graph}, {Dark theme sin graph}, {Subgraphs}
|
|
14
16
|
*/
|
|
15
17
|
|
|
16
18
|
QuickGraphLib.AntialiasingContainer {
|
|
@@ -8,13 +8,15 @@ import QtQuick
|
|
|
8
8
|
\inqmlmodule QuickGraphLib
|
|
9
9
|
\inherits QtQuick::PinchArea
|
|
10
10
|
\brief Pinch/drag handling for graph or image zoom/pan interactions.
|
|
11
|
+
|
|
12
|
+
\sa {Zoomable as image}, {Zoomable axes}
|
|
11
13
|
*/
|
|
12
14
|
|
|
13
15
|
PinchArea {
|
|
14
16
|
id: root
|
|
15
17
|
|
|
16
18
|
/*!
|
|
17
|
-
The view transform, but in a pixel-
|
|
19
|
+
The view transform, but in a pixel-independent form.
|
|
18
20
|
|
|
19
21
|
\sa GraphArea::baseTransformFromRect
|
|
20
22
|
*/
|
|
@@ -6,18 +6,19 @@ import os
|
|
|
6
6
|
import pathlib
|
|
7
7
|
from typing import ContextManager
|
|
8
8
|
|
|
9
|
-
from PySide6 import QtCore, QtGui, QtQml
|
|
9
|
+
from PySide6 import QtCore, QtGui, QtQml, QtQuick, QtSvg
|
|
10
10
|
|
|
11
11
|
from ._version import __version__, __version_tuple__
|
|
12
12
|
|
|
13
13
|
QML_IMPORT_PATH = str(pathlib.Path(__file__).parent.parent)
|
|
14
14
|
|
|
15
15
|
_dll_path = pathlib.Path(__file__).parent
|
|
16
|
-
os.environ["PATH"] = os.fspath(_dll_path) + os.pathsep + os.environ["PATH"]
|
|
17
16
|
if hasattr(os, "add_dll_directory"):
|
|
18
17
|
cm: ContextManager = os.add_dll_directory(os.fspath(_dll_path))
|
|
19
18
|
else:
|
|
20
19
|
cm = contextlib.nullcontext()
|
|
20
|
+
if os.name == "nt":
|
|
21
|
+
os.environ["PATH"] = os.fspath(_dll_path) + os.pathsep + os.environ["PATH"]
|
|
21
22
|
with cm:
|
|
22
23
|
from QuickGraphLib._QuickGraphLib import ( # pylint: disable=import-error,no-name-in-module
|
|
23
24
|
QGLDoubleList,
|
|
@@ -31,21 +31,21 @@ find_path(
|
|
|
31
31
|
)
|
|
32
32
|
find_library(
|
|
33
33
|
shiboken_shared_libraries
|
|
34
|
-
NAMES shiboken6 shiboken6.abi3 libshiboken6.abi3.so.6.
|
|
34
|
+
NAMES shiboken6 shiboken6.abi3 libshiboken6.abi3.so.6.8
|
|
35
35
|
PATH_SUFFIXES shiboken6
|
|
36
36
|
PATHS "${Python_SITELIB}"
|
|
37
37
|
REQUIRED
|
|
38
38
|
)
|
|
39
39
|
find_library(
|
|
40
40
|
pyside_shared_library
|
|
41
|
-
NAMES pyside6 pyside6.abi3 libpyside6.abi3.so.6.
|
|
41
|
+
NAMES pyside6 pyside6.abi3 libpyside6.abi3.so.6.8
|
|
42
42
|
PATH_SUFFIXES PySide6
|
|
43
43
|
PATHS "${Python_SITELIB}"
|
|
44
44
|
REQUIRED
|
|
45
45
|
)
|
|
46
46
|
find_library(
|
|
47
47
|
pyside_qml_shared_library
|
|
48
|
-
NAMES pyside6qml pyside6qml.abi3 libpyside6qml.abi3.so.6.
|
|
48
|
+
NAMES pyside6qml pyside6qml.abi3 libpyside6qml.abi3.so.6.8
|
|
49
49
|
PATH_SUFFIXES PySide6
|
|
50
50
|
PATHS "${Python_SITELIB}"
|
|
51
51
|
REQUIRED
|
|
@@ -145,7 +145,7 @@ python_add_library(
|
|
|
145
145
|
ShibokenHelpers.cpp
|
|
146
146
|
WITH_SOABI
|
|
147
147
|
USE_SABI
|
|
148
|
-
3.
|
|
148
|
+
3.9
|
|
149
149
|
)
|
|
150
150
|
|
|
151
151
|
# Apply relevant include and link flags.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: Copyright (c) 2024 Refeyn Ltd and other QuickGraphLib contributors
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
|
|
4
|
-
from typing import Sequence
|
|
4
|
+
from typing import Sequence, Tuple
|
|
5
5
|
|
|
6
6
|
from PySide6 import QtCore, QtQml
|
|
7
7
|
|
|
@@ -27,13 +27,16 @@ def contour_line(
|
|
|
27
27
|
z: Sequence[Sequence[float]],
|
|
28
28
|
height: float,
|
|
29
29
|
) -> Sequence[QGLPolygonF]:
|
|
30
|
+
if not CONTOURPY_AVAILABLE:
|
|
31
|
+
print("contourpy is not installed, contourLine will not work")
|
|
32
|
+
return []
|
|
33
|
+
|
|
30
34
|
gen = contourpy.contour_generator(
|
|
31
35
|
x=x, y=y, z=z, line_type=contourpy.LineType.Separate
|
|
32
36
|
)
|
|
33
37
|
result = []
|
|
34
38
|
for loop in gen.lines(height):
|
|
35
|
-
|
|
36
|
-
result.append(QGLPolygonF.fromNDArray(loop))
|
|
39
|
+
result.append(QGLPolygonF.fromNDArray(loop)) # type: ignore[arg-type]
|
|
37
40
|
return result
|
|
38
41
|
|
|
39
42
|
|
|
@@ -41,8 +44,12 @@ def contour_fill(
|
|
|
41
44
|
x: Sequence[Sequence[float]],
|
|
42
45
|
y: Sequence[Sequence[float]],
|
|
43
46
|
z: Sequence[Sequence[float]],
|
|
44
|
-
heights:
|
|
47
|
+
heights: Tuple[float, float],
|
|
45
48
|
) -> Sequence[QGLPolygonF]:
|
|
49
|
+
if not CONTOURPY_AVAILABLE:
|
|
50
|
+
print("contourpy is not installed, contourFill will not work")
|
|
51
|
+
return []
|
|
52
|
+
|
|
46
53
|
gen = contourpy.contour_generator(
|
|
47
54
|
x=x, y=y, z=z, fill_type=contourpy.FillType.OuterOffset
|
|
48
55
|
)
|
|
@@ -129,12 +129,93 @@ Tick positions are also important for grids, normally you can just feed in the t
|
|
|
129
129
|
|
|
130
130
|
\section1 Drawing a line
|
|
131
131
|
|
|
132
|
+
To draw a line between two points, use a \l Line:
|
|
133
|
+
|
|
134
|
+
\qml
|
|
135
|
+
QGLGraphItems.Line {
|
|
136
|
+
dataTransform: grapharea.dataTransform
|
|
137
|
+
path: [Qt.point(0, 0), Qt.point(10, 10)]
|
|
138
|
+
}
|
|
139
|
+
\endqml
|
|
140
|
+
|
|
141
|
+
This code snippet will draw a line between the point (0, 0) and (10, 10). The \l Line item will convert these data coordinates into pixel coordinates for you. To change the color of the line, set the \l {ShapePath::strokeColor}{strokeColor} property:
|
|
142
|
+
|
|
143
|
+
\qml
|
|
144
|
+
QGLGraphItems.Line {
|
|
145
|
+
// ...
|
|
146
|
+
strokeColor: "red"
|
|
147
|
+
}
|
|
148
|
+
\endqml
|
|
149
|
+
|
|
150
|
+
\l Line inherits from ShapePath, so any of the properties of ShapePath can be used. This includes line thickness, dashing, line end styles, etc.
|
|
151
|
+
|
|
152
|
+
The recommended way to generate data for a \l Line or other graph items is to generate it in C++ or Python, since it is much more efficient. However, JavaScript arrays also work, so data can be constructed in the QML code using helper functions like \l {Helpers::linspace}{linspace} and \c map:
|
|
153
|
+
|
|
154
|
+
\qml
|
|
155
|
+
QGLGraphItems.Line {
|
|
156
|
+
dataTransform: grapharea.dataTransform
|
|
157
|
+
path: QuickGraphLib.Helpers.linspace(0, 720, 100).map(x => Qt.point(x, Math.sin(x / 180 * Math.PI)))
|
|
158
|
+
strokeColor: "red"
|
|
159
|
+
strokeWidth: 2
|
|
160
|
+
}
|
|
161
|
+
\endqml
|
|
162
|
+
|
|
132
163
|
\section1 A simple legend
|
|
133
164
|
|
|
165
|
+
QuickGraphLib provides a basic legend type, which can be used to label the different data sets in use in a graph. Since legends come in many styles, it is quite basic. If you have specific needs, the best option is to implement your own using standard QML types, as you will have maximum flexibility. However, if you need something simple, you can use BasicLegend and BasicLegendItem:
|
|
166
|
+
|
|
167
|
+
\qml
|
|
168
|
+
QGLGraphItems.BasicLegend {
|
|
169
|
+
anchors.margins: 10
|
|
170
|
+
anchors.right: parent.right
|
|
171
|
+
anchors.top: parent.top
|
|
172
|
+
|
|
173
|
+
QGLGraphItems.BasicLegendItem {
|
|
174
|
+
strokeColor: "red"
|
|
175
|
+
text: "Sin(θ)"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
\endqml
|
|
179
|
+
|
|
180
|
+
Anchors are used to position the legend (since this is purely a UI component, we don't need to care about data coordinates - the legend is not representing any data). BasicLegendItem can be used to add rows to the legend, and it's properties can be used to set the name and indicator color.
|
|
181
|
+
|
|
134
182
|
\section1 Full example
|
|
135
183
|
|
|
136
184
|
The full code for this example can be seen in the \l {Basic sin graph (without prefabs)} example.
|
|
137
185
|
|
|
138
186
|
\section1 Prefabs
|
|
139
187
|
|
|
188
|
+
QuickGraphLib comes with a set of prefab components, so make common tasks like simple X/Y axes simpler. XYAxes sets up a graph area with two axes, one on the left and one on the bottom. When using XYAxes, you only need to add the graph items, the axes, grid and graph area are already created:
|
|
189
|
+
|
|
190
|
+
\qml
|
|
191
|
+
QGLPreFabs.XYAxes {
|
|
192
|
+
id: axes
|
|
193
|
+
|
|
194
|
+
viewRect: Qt.rect(-20, -1.1, 760, 2.2)
|
|
195
|
+
xLabel: "Angle (°)"
|
|
196
|
+
yLabel: "Value"
|
|
197
|
+
|
|
198
|
+
QGLGraphItems.Line {
|
|
199
|
+
id: sinLine
|
|
200
|
+
|
|
201
|
+
dataTransform: axes.dataTransform
|
|
202
|
+
path: QuickGraphLib.Helpers.linspace(0, 720, 100).map(x => Qt.point(x, Math.sin(x / 180 * Math.PI)))
|
|
203
|
+
strokeColor: "red"
|
|
204
|
+
strokeWidth: 2
|
|
205
|
+
}
|
|
206
|
+
QGLGraphItems.BasicLegend {
|
|
207
|
+
anchors.margins: 10
|
|
208
|
+
anchors.right: parent.right
|
|
209
|
+
anchors.top: parent.top
|
|
210
|
+
|
|
211
|
+
QGLGraphItems.BasicLegendItem {
|
|
212
|
+
strokeColor: sinLine.strokeColor
|
|
213
|
+
text: "Sin(θ)"
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
\endqml
|
|
218
|
+
|
|
219
|
+
XYAxes can be customized to some extent (see \l {Dark theme sin graph} for a theming example), the components of the graph are exposed though properties. However, if a more flexibly layout is needed, then prefabs should not be used.
|
|
220
|
+
|
|
140
221
|
*/
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: Copyright (c) 2024 Refeyn Ltd and other QuickGraphLib contributors
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
/*!
|
|
5
|
+
\page interaction.html
|
|
6
|
+
\title Interaction
|
|
7
|
+
\brief How to construct interactive graphs
|
|
8
|
+
|
|
9
|
+
\section1 Zooming and panning
|
|
10
|
+
|
|
11
|
+
Zooming and panning can be handled using a ZoomPanHandler, which combines a PinchHandler and a MouseArea into one type that translates touch and mouse inputs into a transformation. The ZoomPanHandler has two outputs:
|
|
12
|
+
|
|
13
|
+
\list
|
|
14
|
+
\li \l{ZoomPanHandler::viewTransform}{viewTransform}, which can be provided to a Matrix4x4 transform, and used on any \l Item, or passed to \l {GraphArea::viewTransform} to scale a graph
|
|
15
|
+
\li \l{ZoomPanHandler::baseTransform}{baseTransform}, which is a more size-independent version of viewTransform which can be translated into a view rect using ZoomPanHandler's utility methods
|
|
16
|
+
\endlist
|
|
17
|
+
|
|
18
|
+
With these properties, two sorts of interaction can be implemented:
|
|
19
|
+
|
|
20
|
+
\list
|
|
21
|
+
\li Zooming into a graph as if it's an image. This can be useful for large or complex figures, where the user may not be able to see the details. This can be achieved by applying the viewTransform to the \l Item which contains the graph (e.g. the GridLayout or XYAxes). See the \l {Zoomable as image} example for more details.
|
|
22
|
+
\li Using zooming and panning to change the axes limits. This can be used when the data itself is has complex detail that is not visible when all of the data is shown. This can be achieved by passing the viewTransform to the GraphArea, and optionally providing a set of spin boxes for precise control of the limits. See the \l {Zoomable axes} example for more details.
|
|
23
|
+
\endlist
|
|
24
|
+
|
|
25
|
+
\section1 Interactive graph items
|
|
26
|
+
|
|
27
|
+
There is a huge amount of interaction possible in a graph, so here we'll stick to the basics. Things you might want to add to your graph include:
|
|
28
|
+
|
|
29
|
+
\list
|
|
30
|
+
\li Draggable regions
|
|
31
|
+
\li Hover text / tooltips
|
|
32
|
+
\li Read out of where the cursor is
|
|
33
|
+
\li Buttons over particular data points
|
|
34
|
+
\endlist
|
|
35
|
+
|
|
36
|
+
All of this can be implemented using MouseArea, or using a control, and using the \l{Item::x}{x} and \l{Item::y}{y} properties to position the \l Item (this is because graph items usually inherit from ShapePath, which is not an Item, and so anchors do not work).
|
|
37
|
+
|
|
38
|
+
The \l {Readout line} example demonstrates using a MouseArea to monitor the position of the mouse and translate it into data coordinates, a similar arrangement can be used for tooltips.
|
|
39
|
+
|
|
40
|
+
The \l {Draggable region} example uses a GraphItemDragHandler (another MouseArea helper) to implement a draggable and resizable region.
|
|
41
|
+
|
|
42
|
+
In general, because QML already provides so many interactive items, adding interactivity to a graph is easy and just uses standard QML items, with a bit of extra maths to do positioning since it often needs to be done in data coordinates instead of purely using pixel coordinates.
|
|
43
|
+
*/
|
|
@@ -31,6 +31,8 @@ Visit the \l {QuickGraphLib} module documentation and examples (in particular th
|
|
|
31
31
|
\inqmlmodule QuickGraphLib.PythonHelpers
|
|
32
32
|
\inherits QObject
|
|
33
33
|
\brief Produces contour lines and fills from XYZ data.
|
|
34
|
+
|
|
35
|
+
The contourpy package must be installed to use these methods. See \l {https://contourpy.readthedocs.io/} for installation instructions and algorithm details.
|
|
34
36
|
*/
|
|
35
37
|
|
|
36
38
|
/*!
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# QuickGraphLib
|
|
2
|
+
|
|
3
|
+
A scientific graphing library for [QtQuick](https://doc.qt.io/qt-6/qtquick-index.html) using Qt6.
|
|
4
|
+
|
|
5
|
+
Links:
|
|
6
|
+
- [Online documentation](https://refeyn.github.io/QuickGraphLib)
|
|
7
|
+
- [PyPI page](https://pypi.org/project/QuickGraphLib/)
|
|
8
|
+
- [Pre-built artefacts](https://github.com/refeyn/QuickGraphLib/releases/latest)
|
|
9
|
+
|
|
10
|
+
Key advantages:
|
|
11
|
+
|
|
12
|
+
- Written in C++ and QML (with some optional Python helpers), so it can be used in both C++ and Python projects
|
|
13
|
+
- QtQuick's hardware-based rendering makes this library render very fast
|
|
14
|
+
- Support for line graphs, histograms, contour plots and more
|
|
15
|
+
- Interactivity supported natively though declarative bindings and QtQuick
|
|
16
|
+
- Support for PNG and SVG export
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
The example gallery can be run using (provided the Python environment has [PySide6](https://pypi.org/project/PySide6/) and [contourpy](https://pypi.org/project/contourpy/) installed):
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
python examples/gallery.py
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
<p align="center"><img src="https://github.com/refeyn/QuickGraphLib/assets/103422031/56fdff62-ef77-4184-9f43-59a76b92d728" width="80%"></p>
|
|
27
|
+
|
|
28
|
+
## Qt version compatibility
|
|
29
|
+
|
|
30
|
+
This version of QuickGraphLib is compatible with Qt and PySide6 6.8.0. If you use this module from C++, then Qt's ABI stability guarantees means the compiled binaries will work for any Qt version >= 6.8 and < 7.0. If you use this module from Python, there are some additional features that rely on the PySide6 library version. Therefore the PySide6 version must be 6.8.0.2 exactly. Other 6.8 versions of PySide6 may work, but there are no guarantees.
|
|
31
|
+
|
|
32
|
+
The pre-built wheels aim to be compatible with the most recent recent Qt LTS version, which is currently 6.8. Pre-built wheels for higher non-LTS Qt versions will likely be available once Qt 6.9 is released.
|
|
33
|
+
|
|
34
|
+
## Python version compatibility
|
|
35
|
+
|
|
36
|
+
QuickGraphLib is compatible with the same Python versions and glibc versions that PySide6 is. For PySide6 6.8, the minimum Python version is 3.9.
|