From 2943560d58190bb6cbadaaf07bd10841e864b7cf 2012-05-22 13:08:25 From: sauimone Date: 2012-05-22 13:08:25 Subject: [PATCH] Fixed category handling of barcharts. Now the categories can be undefined. Updated documentation. --- diff --git a/doc/images/examples_barchart.png b/doc/images/examples_barchart.png index 8039cb7eb885a79f856c68e4b6f537c56e7e20e2..88009301c7e6703dbdf24e429b566c3e12fc133a 100644 GIT binary patch literal 24437 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 NO}L(FwX#k4{{rH%oy-6L literal 38989 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Ν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 JmHHm>{{a@!QPuze literal 0 Hc$@Area chart
  • Bar chart
  • Custom chart
  • +
  • Grouped bar chart
  • Line chart
  • Model data
  • Percent bar chart
  • diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc index 1c20cc7..998bff5 100644 --- a/doc/src/index.qdoc +++ b/doc/src/index.qdoc @@ -24,19 +24,20 @@ barchart + groupedbarcchart stackedbarchart - percentbarcchart + percentbarcchart linechart - piechart customerchart - zoomlinechart + piechart charttheme + zoomlinechart diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp index 4c68efc..b786b76 100644 --- a/examples/barchart/main.cpp +++ b/examples/barchart/main.cpp @@ -32,11 +32,6 @@ int main(int argc, char *argv[]) QApplication a(argc, argv); //![1] - QBarCategories categories; - categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; -//![1] - -//![2] QBarSet *set0 = new QBarSet("Jane"); QBarSet *set1 = new QBarSet("John"); QBarSet *set2 = new QBarSet("Axel"); @@ -48,42 +43,40 @@ int main(int argc, char *argv[]) *set2 << QPointF(0.2, 3) << QPointF(1.4, 4) << QPointF(2.50, 5) << QPointF(3.4, 6) << QPointF(4.4, 7) << QPointF(5.4, 8); *set3 << QPointF(0.3, 4) << QPointF(1.6, 5) << QPointF(2.55, 6) << QPointF(3.6, 7) << QPointF(4.6, 8) << QPointF(5.6, 9); *set4 << QPointF(0.4, 5) << QPointF(1.8, 6) << QPointF(2.6, 7) << QPointF(3.8, 8) << QPointF(4.8, 9) << QPointF(5.8, 10); -//![2] +//![1] -//![3] +//![2] QBarSeries* series = new QBarSeries(); - series->setCategories(categories); series->append(set0); series->append(set1); series->append(set2); series->append(set3); series->append(set4); +//![2] //![3] - -//![4] QChart* chart = new QChart(); chart->addSeries(series); chart->setTitle("Simple barchart example"); -//![4] +//![3] -//![5] +//![4] chart->legend()->setVisible(true); chart->legend()->setAlignment(QLegend::AlignmentBottom); chart->axisY()->setNiceNumbersEnabled(true); -//![5] +//![4] -//![6] +//![5] QChartView* chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); -//![6] +//![5] -//![7] +//![6] QMainWindow window; window.setCentralWidget(chartView); window.resize(400, 300); window.show(); -//![7] +//![6] return a.exec(); } diff --git a/src/barchart/qbarseries.cpp b/src/barchart/qbarseries.cpp index b739b7b..b13dd95 100644 --- a/src/barchart/qbarseries.cpp +++ b/src/barchart/qbarseries.cpp @@ -39,9 +39,10 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE \brief part of QtCommercial chart API. \mainclass - QBarSeries represents a series of data shown as bars. One QBarSeries can contain multiple - QBarSet data sets. QBarSeries groups the data from sets to categories, which are defined - by QStringList. + QBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars to + the position defined by data. Single bar is defined by QPointF, where x value is the x-coordinate of the bar + and y-value is the height of the bar. The category names are ignored with this series and x-axis + shows the x-values. See the \l {BarChart Example} {bar chart example} to learn how to create a simple bar chart. \image examples_barchart.png @@ -65,11 +66,11 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE */ /*! - Constructs empty QBarSeries. Parameter \a categories defines the categories for chart. + Constructs empty QBarSeries. QBarSeries is QObject which is a child of a \a parent. */ -QBarSeries::QBarSeries(/*QBarCategories categories,*/ QObject *parent) : - QAbstractSeries(*new QBarSeriesPrivate(/*categories,*/ this),parent) +QBarSeries::QBarSeries(QObject *parent) : + QAbstractSeries(*new QBarSeriesPrivate(this),parent) { } @@ -97,6 +98,9 @@ QAbstractSeries::SeriesType QBarSeries::type() const return QAbstractSeries::SeriesTypeBar; } +/*! + Sets the \a categories, which are used to to group the data. +*/ void QBarSeries::setCategories(QBarCategories categories) { Q_D(QBarSeries); @@ -105,7 +109,9 @@ void QBarSeries::setCategories(QBarCategories categories) } /*! - Adds a set of bars to series. Takes ownership of \a set. + Adds a set of bars to series. Takes ownership of \a set. If the set is null or is already in series, it won't be appended. + Returns true, if appending succeeded. + */ bool QBarSeries::append(QBarSet *set) { @@ -122,6 +128,7 @@ bool QBarSeries::append(QBarSet *set) /*! Removes a set of bars from series. Releases ownership of \a set. Doesn't delete \a set. + Returns true, if set was removed. */ bool QBarSeries::remove(QBarSet *set) { @@ -138,6 +145,9 @@ bool QBarSeries::remove(QBarSet *set) /*! Adds a list of barsets to series. Takes ownership of \a sets. + Returns true, if all sets were appended succesfully. If any of the sets is null or is already appended to series, + nothing is appended and function returns false. If any of the sets is in list more than once, nothing is appended + and function returns false. */ bool QBarSeries::append(QList sets) { @@ -198,7 +208,7 @@ int QBarSeries::barsetCount() const int QBarSeries::categoryCount() const { Q_D(const QBarSeries); - return d->m_categories.count(); + return d->categoryCount(); } /*! @@ -276,7 +286,7 @@ QBarModelMapper* QBarSeries::modelMapper() const QBarCategories QBarSeries::categories() const { Q_D(const QBarSeries); - return d->m_categories; + return d->categories(); } /*! @@ -295,7 +305,6 @@ QBarSeriesPrivate::QBarSeriesPrivate(QBarSeries *q) : QAbstractSeriesPrivate(q), m_barMargin(0.05), // Default value is 5% of category width m_mapper(0) - // m_categories(categories), { } @@ -304,6 +313,51 @@ void QBarSeriesPrivate::setCategories(QBarCategories categories) m_categories = categories; } +void QBarSeriesPrivate::insertCategory(int index, const QString category) +{ + m_categories.insert(index, category); + emit categoriesUpdated(); +} + +void QBarSeriesPrivate::removeCategory(int index) +{ + m_categories.removeAt(index); + emit categoriesUpdated(); +} + +int QBarSeriesPrivate::categoryCount() const +{ + if (m_categories.count() > 0) { + return m_categories.count(); + } + + // No categories defined. return count of longest set. + int count = 0; + for (int i=0; icount() > count) { + count = m_barSets.at(i)->count(); + } + } + + return count; +} + +QBarCategories QBarSeriesPrivate::categories() const +{ + if (m_categories.count() > 0) { + return m_categories; + } + + // No categories defined. retun list of indices. + QBarCategories categories; + + int count = categoryCount(); + for (int i = 0; i < count; i++) { + categories.append(QString::number(i)); + } + return categories; +} + void QBarSeriesPrivate::setBarMargin(qreal margin) { if (margin > 1.0) { @@ -328,7 +382,11 @@ QBarSet* QBarSeriesPrivate::barsetAt(int index) QString QBarSeriesPrivate::categoryName(int category) { - return m_categories.at(category); + if ((category > 0) && (category < m_categories.count())) { + return m_categories.at(category); + } + + return QString::number(category); } qreal QBarSeriesPrivate::min() @@ -425,7 +483,7 @@ qreal QBarSeriesPrivate::absoluteCategorySum(int category) qreal QBarSeriesPrivate::maxCategorySum() { qreal max = INT_MIN; - int count = m_categories.count(); + int count = categoryCount(); for (int i = 0; i < count; i++) { qreal sum = categorySum(i); if (sum > max) @@ -540,18 +598,6 @@ void QBarSeriesPrivate::initializeDataFromModel() // emit updatedBars(); } -void QBarSeriesPrivate::insertCategory(int index, const QString category) -{ - m_categories.insert(index, category); - emit categoriesUpdated(); -} - -void QBarSeriesPrivate::removeCategory(int index) -{ - m_categories.removeAt(index); - emit categoriesUpdated(); -} - void QBarSeriesPrivate::barsetChanged() { emit updatedBars(); @@ -566,7 +612,7 @@ void QBarSeriesPrivate::scaleDomain(Domain& domain) int tickXCount(domain.tickXCount()); int tickYCount(domain.tickYCount()); - qreal x = m_categories.count(); + qreal x = categoryCount(); qreal y = max(); minX = qMin(minX, x); minY = qMin(minY, y); diff --git a/src/barchart/qbarseries.h b/src/barchart/qbarseries.h index de81224..11ff401 100644 --- a/src/barchart/qbarseries.h +++ b/src/barchart/qbarseries.h @@ -46,8 +46,8 @@ public: QAbstractSeries::SeriesType type() const; void setCategories(QBarCategories categories); - bool append(QBarSet *set); // Takes ownership of set - bool remove(QBarSet *set); // Releases ownership, doesn't delete set + bool append(QBarSet *set); + bool remove(QBarSet *set); bool append(QList sets); bool remove(QList sets); int barsetCount() const; diff --git a/src/barchart/qbarseries_p.h b/src/barchart/qbarseries_p.h index 12a7af2..c1f5ebd 100644 --- a/src/barchart/qbarseries_p.h +++ b/src/barchart/qbarseries_p.h @@ -19,6 +19,11 @@ class QBarSeriesPrivate : public QAbstractSeriesPrivate public: QBarSeriesPrivate(QBarSeries *parent); void setCategories(QBarCategories categories); + void insertCategory(int index, const QString category); + void removeCategory(int index); + int categoryCount() const; + QBarCategories categories() const; + void setBarMargin(qreal margin); qreal barMargin(); @@ -26,9 +31,6 @@ public: Chart* createGraphics(ChartPresenter* presenter); QList createLegendMarker(QLegend* legend); - void insertCategory(int index, const QString category); - void removeCategory(int index); - QBarSet* barsetAt(int index); QString categoryName(int category); qreal min(); diff --git a/src/barchart/qbarset.cpp b/src/barchart/qbarset.cpp index 4dbdc36..8051f2e 100644 --- a/src/barchart/qbarset.cpp +++ b/src/barchart/qbarset.cpp @@ -34,7 +34,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE \mainclass - \sa QBarSeries, QStackedBarSeries, QPercentBarSeries + \sa QBarSeries, QGroupedBarSeries, QStackedBarSeries, QPercentBarSeries */ /*! @@ -84,13 +84,22 @@ QString QBarSet::name() const return d_ptr->m_name; } +/*! + Appends a point to set. Parameter \a value x coordinate defines the + position in x-axis and y coordinate defines the height of bar. + Depending on presentation (QBarSeries, QGroupedBarSeries, QStackedBarSeries, QPercentBarSeries) + the x values are used or ignored. +*/ void QBarSet::append(const QPointF value) { d_ptr->m_values.append(value); emit d_ptr->restructuredBars(); } - +/*! + Appends a list of \a points to set. Works like append with single point. + \sa append() +*/ void QBarSet::append(const QList values) { for (int i=0; i values) } /*! - Appends new value \a value to the end of set. + Appends new value \a value to the end of set. Internally the value is converted to QPointF, + with x coordinate being the index of appended value and y coordinate is the value. */ void QBarSet::append(const qreal value) { append(QPointF(d_ptr->m_values.count(), value)); -// d_ptr->m_values.append(value); } - +/*! + Appends a list of reals to set. Works like append with single real value. The values in list + are converted to QPointF, where x coordinate is the index of point and y coordinate is the value. + \sa append() +*/ void QBarSet::append(const QList values) { int index = d_ptr->m_values.count(); @@ -120,7 +133,8 @@ void QBarSet::append(const QList values) } /*! - Appends new value \a value to the end of set. + Convinience operator. Same as append, with real \a value. + \sa append() */ QBarSet& QBarSet::operator << (const qreal &value) { @@ -128,6 +142,10 @@ QBarSet& QBarSet::operator << (const qreal &value) return *this; } +/*! + Convinience operator. Same as append, with QPointF \a value. + \sa append() +*/ QBarSet& QBarSet::operator << (const QPointF &value) { append(value); @@ -165,7 +183,10 @@ void QBarSet::replace(const int index, const qreal value) } /*! - Returns value of set indexed by \a index. Note that all appended values are stored internally as QPointF + Returns value of set indexed by \a index. Note that all appended values are stored internally as QPointF. + The returned QPointF has x coordinate, which is index (if appended with qreal append) or the x value + of the QPointF (if appended with QPointF append). + If the index is out of bounds QPointF(0, 0.0) is returned. */ QPointF QBarSet::at(const int index) const { @@ -177,7 +198,9 @@ QPointF QBarSet::at(const int index) const } /*! - Returns value of set indexed by \a index + Returns value of set indexed by \a index. ote that all appended values are stored internally as QPointF. + The returned QPointF has x coordinate, which is index (if appended with qreal append) or the x value + of the QPointF (if appended with QPointF append). */ QPointF QBarSet::operator [](const int index) const { @@ -193,7 +216,7 @@ int QBarSet::count() const } /*! - Returns sum of all values in barset. + Returns sum of all values in barset. The sum is sum of y coordinates in the QPointF representation. */ qreal QBarSet::sum() const { diff --git a/src/barchart/qgroupedbarseries.cpp b/src/barchart/qgroupedbarseries.cpp index ec0762b..1c6cdd6 100644 --- a/src/barchart/qgroupedbarseries.cpp +++ b/src/barchart/qgroupedbarseries.cpp @@ -32,9 +32,9 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE \brief part of QtCommercial chart API. \mainclass - QGroupedBarSeries represents a series of data shown as bars. All bars in same category are - grouped next to each other. One QGroupedBarSeries can contain multiple QBarSet data sets. - QGroupedBarSeries groups the data from sets to categories, which are defined by QStringList. + QGroupedBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars + as groups, where bars in same category are grouped next to each other. QGroupedBarSeries groups the data + from sets to categories, which are defined by a QStringList. See the \l {GroupedbarChart Example} {grouped bar chart example} to learn how to create a grouped bar chart. \image examples_groupedbarchart.png @@ -45,11 +45,11 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE /*! \fn virtual QSeriesType QGroupedBarSeries::type() const \brief Returns type of series. - \sa QSeriesType + \sa QAbstractSeries, QSeriesType */ /*! - Constructs empty QGroupedBarSeries. Parameter \a categories defines the categories for chart. + Constructs empty QGroupedBarSeries. QGroupedBarSeries is QObject which is a child of a \a parent. */ QGroupedBarSeries::QGroupedBarSeries(QObject *parent) diff --git a/src/barchart/qpercentbarseries.cpp b/src/barchart/qpercentbarseries.cpp index 6889b2b..28f4d64 100644 --- a/src/barchart/qpercentbarseries.cpp +++ b/src/barchart/qpercentbarseries.cpp @@ -25,7 +25,6 @@ #include "charttheme_p.h" #include "chartanimator_p.h" - QTCOMMERCIALCHART_BEGIN_NAMESPACE /*! @@ -33,9 +32,9 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE \brief part of QtCommercial chart API. \mainclass - QPercentBarSeries represents a series of data shown as bars. Each bar of QBarSet is shown as percentage - of all bars in category. One QPercentBarSeries can contain multiple QBarSet data sets. - QBarSeries groups the data from sets to categories, which are defined by QStringList. + QPercentBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars + as stacks, where each bar is shown as percentage of all bars in that category. + QPercentBarSeries groups the data from sets to categories, which are defined by a QStringList. See the \l {PercentbarChart Example} {percent bar chart example} to learn how to create a percent bar chart. \image examples_percentbarchart.png @@ -50,11 +49,11 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE */ /*! - Constructs empty QPercentBarSeries. Parameter \a categories defines the categories for chart. + Constructs empty QPercentBarSeries. QPercentBarSeries is QObject which is a child of a \a parent. */ -QPercentBarSeries::QPercentBarSeries(/*QBarCategories categories,*/ QObject *parent) - : QBarSeries(*new QPercentBarSeriesPrivate(/*categories,*/this), parent) +QPercentBarSeries::QPercentBarSeries(QObject *parent) + : QBarSeries(*new QPercentBarSeriesPrivate(this), parent) { } @@ -65,7 +64,7 @@ QAbstractSeries::SeriesType QPercentBarSeries::type() const /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -QPercentBarSeriesPrivate::QPercentBarSeriesPrivate(/*QBarCategories categories,*/ QPercentBarSeries *q) : QBarSeriesPrivate(/*categories,*/q) +QPercentBarSeriesPrivate::QPercentBarSeriesPrivate(QPercentBarSeries *q) : QBarSeriesPrivate(q) { } diff --git a/src/barchart/qpercentbarseries.h b/src/barchart/qpercentbarseries.h index ba12f97..fa67461 100644 --- a/src/barchart/qpercentbarseries.h +++ b/src/barchart/qpercentbarseries.h @@ -32,7 +32,7 @@ class QTCOMMERCIALCHART_EXPORT QPercentBarSeries : public QBarSeries { Q_OBJECT public: - explicit QPercentBarSeries(/*QBarCategories categories,*/ QObject *parent = 0); + explicit QPercentBarSeries(QObject *parent = 0); QAbstractSeries::SeriesType type() const; private: diff --git a/src/barchart/qstackedbarseries.cpp b/src/barchart/qstackedbarseries.cpp index 12f7c62..e518748 100644 --- a/src/barchart/qstackedbarseries.cpp +++ b/src/barchart/qstackedbarseries.cpp @@ -32,8 +32,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE \brief part of QtCommercial chart API. \mainclass - QStackedBarSeries represents a series of data shown as bars. All bars in same category are - stacked on top of each other. One QStackedBarSeries can contain multiple QBarSet data sets. + QStackedBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars + as stacks, where bars in same category are stacked on top of each other. QStackedBarSeries groups the data from sets to categories, which are defined by QStringList. See the \l {StackedbarChart Example} {stacked bar chart example} to learn how to create a stacked bar chart. @@ -45,15 +45,15 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE /*! \fn virtual QSeriesType QStackedBarSeries::type() const \brief Returns type of series. - \sa QSeriesType + \sa QAbstractSeries, QSeriesType */ /*! - Constructs empty QStackedBarSeries. Parameter \a categories defines the categories for chart. + Constructs empty QStackedBarSeries. QStackedBarSeries is QObject which is a child of a \a parent. */ -QStackedBarSeries::QStackedBarSeries(/*QBarCategories categories,*/ QObject *parent) - : QBarSeries(*new QStackedBarSeriesPrivate(/*categories,*/this), parent) +QStackedBarSeries::QStackedBarSeries(QObject *parent) + : QBarSeries(*new QStackedBarSeriesPrivate(this), parent) { } @@ -64,7 +64,7 @@ QAbstractSeries::SeriesType QStackedBarSeries::type() const /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(/*QBarCategories categories,*/ QStackedBarSeries *q) : QBarSeriesPrivate(/*categories,*/q) +QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(QStackedBarSeries *q) : QBarSeriesPrivate(q) { } diff --git a/src/barchart/qstackedbarseries.h b/src/barchart/qstackedbarseries.h index 8833d9f..135ee65 100644 --- a/src/barchart/qstackedbarseries.h +++ b/src/barchart/qstackedbarseries.h @@ -32,7 +32,7 @@ class QTCOMMERCIALCHART_EXPORT QStackedBarSeries : public QBarSeries { Q_OBJECT public: - explicit QStackedBarSeries(/*QBarCategories categories,*/ QObject *parent = 0); + explicit QStackedBarSeries(QObject *parent = 0); QAbstractSeries::SeriesType type() const; private: diff --git a/src/chartdataset.cpp b/src/chartdataset.cpp index 707cc1e..c1c0acc 100644 --- a/src/chartdataset.cpp +++ b/src/chartdataset.cpp @@ -88,6 +88,7 @@ void ChartDataSet::addSeries(QAbstractSeries* series, QAxis *axisY) series->d_ptr->scaleDomain(*domain); + // Note that with SeriesTypeBar we don't set up categories, but use real values on x-asis if(series->type() == QAbstractSeries::SeriesTypeGroupedBar || series->type() == QAbstractSeries::SeriesTypeStackedBar || series->type() == QAbstractSeries::SeriesTypePercentBar) { diff --git a/src/qabstractseries.cpp b/src/qabstractseries.cpp index bfaab63..d879dcf 100644 --- a/src/qabstractseries.cpp +++ b/src/qabstractseries.cpp @@ -44,6 +44,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE \value SeriesTypeBar \value SeriesTypeStackedBar \value SeriesTypePercentBar + \value SeriesTypeGroupedBar \value SeriesTypePie \value SeriesTypeScatter \value SeriesTypeSpline