1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/*
* This file is part of KQuickCharts
* SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
*
* SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
import QtQuick 2.9
import QtQuick.Controls 2.2
import org.kde.quickcharts 1.0 as Charts
import org.kde.quickcharts.controls 1.0
/**
* A line chart with legend, grid and axis labels.
*/
Control {
property alias valueSources: lineChart.valueSources
property alias names: nameSource.array
property alias color: colorSource.baseColor
property alias lineWidth: lineChart.lineWidth
property alias fillOpacity: lineChart.fillOpacity
property alias stacked: lineChart.stacked
property alias chart: lineChart
property alias legend: legend
property alias xLabels: xAxisLabels
property alias yLabels: yAxisLabels
property alias verticalLinesVisible: verticalLines.visible
property alias horizontalLinesVisible: horizontalLines.visible
property alias xRange: lineChart.xRange
property alias yRange: lineChart.yRange
property alias xAxisSource: xAxisLabels.source
property alias yAxisSource: yAxisLabels.source
property alias pointDelegate: lineChart.pointDelegate
background: Rectangle { color: Theme.backgroundColor }
contentItem: Item {
anchors.fill: parent;
Charts.GridLines {
id: horizontalLines
anchors.fill: lineChart
chart: lineChart
major.frequency: 2
major.lineWidth: 2
major.color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
minor.frequency: 1
minor.lineWidth: 1
minor.color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
}
Charts.GridLines {
id: verticalLines
anchors.fill: lineChart
chart: lineChart
direction: Charts.GridLines.Vertical;
major.count: 1
major.lineWidth: 2
major.color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
minor.count: 3
minor.lineWidth: 1
minor.color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
}
Charts.AxisLabels {
id: yAxisLabels
anchors {
left: parent.left
top: parent.top
bottom: xAxisLabels.top
}
direction: Charts.AxisLabels.VerticalBottomTop
delegate: Label { text: Charts.AxisLabels.label }
source: Charts.ChartAxisSource { chart: lineChart; axis: Charts.ChartAxisSource.YAxis; itemCount: 5 }
}
Charts.AxisLabels {
id: xAxisLabels
anchors {
left: yAxisLabels.visible ? yAxisLabels.right : parent.left
right: parent.right
bottom: legend.top
}
delegate: Label { text: Charts.AxisLabels.label }
source: Charts.ChartAxisSource { chart: lineChart; axis: Charts.ChartAxisSource.XAxis; itemCount: 5 }
}
Legend {
id: legend
anchors {
left: yAxisLabels.visible ? yAxisLabels.right : parent.left
right: parent.right
bottom: parent.bottom
bottomMargin: Theme.smallSpacing
}
chart: lineChart
}
Charts.LineChart {
id: lineChart
anchors {
top: parent.top
left: yAxisLabels.visible ? yAxisLabels.right : parent.left
right: parent.right
bottom: xAxisLabels.visible ? xAxisLabels.top : legend.top
}
xRange.automatic: true
yRange.automatic: true
colorSource: Charts.ColorGradientSource { id: colorSource; baseColor: Theme.highlightColor; itemCount: lineChart.valueSources.length }
nameSource: Charts.ArraySource { id: nameSource; array: ["1", "2", "3", "4", "5"] }
}
}
}
|