diff --git a/src/barchart/qbarseries.cpp b/src/barchart/qbarseries.cpp index e0b2d41..475ac2a 100644 --- a/src/barchart/qbarseries.cpp +++ b/src/barchart/qbarseries.cpp @@ -482,6 +482,44 @@ qreal QBarSeriesPrivate::maxCategorySum() return max; } +qreal QBarSeriesPrivate::minX() +{ + if (m_barSets.count() <= 0) { + return 0; + } + qreal min = INT_MAX; + + for (int i = 0; i < m_barSets.count(); i++) { + int categoryCount = m_barSets.at(i)->count(); + for (int j = 0; j < categoryCount; j++) { + qreal temp = m_barSets.at(i)->at(j).x(); + if (temp < min) + min = temp; + } + } + return min; +} + +qreal QBarSeriesPrivate::maxX() +{ + if (m_barSets.count() <= 0) { + return 0; + } + qreal max = INT_MIN; + + for (int i = 0; i < m_barSets.count(); i++) { + int categoryCount = m_barSets.at(i)->count(); + for (int j = 0; j < categoryCount; j++) { + qreal temp = m_barSets.at(i)->at(j).x(); + if (temp > max) + max = temp; + } + } + + return max; +} + + void QBarSeriesPrivate::scaleDomain(Domain& domain) { qreal minX(domain.minX()); @@ -491,13 +529,14 @@ void QBarSeriesPrivate::scaleDomain(Domain& domain) int tickXCount(domain.tickXCount()); int tickYCount(domain.tickYCount()); - qreal x = categoryCount(); + qreal seriesMinX = this->minX(); + qreal seriesMaxX = this->maxX(); qreal y = max(); - minX = qMin(minX, x) - 0.5; + minX = qMin(minX, seriesMinX - 0.5); minY = qMin(minY, y); - maxX = qMax(maxX, x) + 0.5; + maxX = qMax(maxX, seriesMaxX + 0.5); maxY = qMax(maxY, y); - tickXCount = x+1; + tickXCount = categoryCount()+1; domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); } diff --git a/src/barchart/qbarseries_p.h b/src/barchart/qbarseries_p.h index 9fa2c84..e8b7de9 100644 --- a/src/barchart/qbarseries_p.h +++ b/src/barchart/qbarseries_p.h @@ -76,6 +76,8 @@ public: qreal categorySum(int category); qreal absoluteCategorySum(int category); qreal maxCategorySum(); + qreal minX(); + qreal maxX(); Q_SIGNALS: void clicked(QBarSet *barset, int index); diff --git a/src/barchart/qgroupedbarseries.cpp b/src/barchart/qgroupedbarseries.cpp index 94794fe..dab9241 100644 --- a/src/barchart/qgroupedbarseries.cpp +++ b/src/barchart/qgroupedbarseries.cpp @@ -77,9 +77,9 @@ void QGroupedBarSeriesPrivate::scaleDomain(Domain& domain) qreal x = categoryCount(); qreal y = max(); - minX = qMin(minX, x) - 0.5; + minX = qMin(minX, -0.5); minY = qMin(minY, y); - maxX = qMax(maxX, x) - 0.5; + maxX = qMax(maxX, x - 0.5); maxY = qMax(maxY, y); tickXCount = x+1; diff --git a/src/barchart/qpercentbarseries.cpp b/src/barchart/qpercentbarseries.cpp index afd5f02..2e0276e 100644 --- a/src/barchart/qpercentbarseries.cpp +++ b/src/barchart/qpercentbarseries.cpp @@ -76,8 +76,8 @@ void QPercentBarSeriesPrivate::scaleDomain(Domain& domain) int tickYCount(domain.tickYCount()); qreal x = categoryCount(); - minX = qMin(minX, x) - 0.5; - maxX = qMax(maxX, x) - 0.5; + minX = qMin(minX, -0.5); + maxX = qMax(maxX, x - 0.5); minY = 0; maxY = 100; tickXCount = x+1; diff --git a/src/barchart/qstackedbarseries.cpp b/src/barchart/qstackedbarseries.cpp index f7fcbd1..c7c89b1 100644 --- a/src/barchart/qstackedbarseries.cpp +++ b/src/barchart/qstackedbarseries.cpp @@ -77,9 +77,9 @@ void QStackedBarSeriesPrivate::scaleDomain(Domain& domain) qreal x = categoryCount(); qreal y = maxCategorySum(); - minX = qMin(minX, x) - 0.5; + minX = qMin(minX, -0.5); minY = qMin(minY, y); - maxX = qMax(maxX, x) - 0.5; + maxX = qMax(maxX, x - 0.5); maxY = qMax(maxY, y); tickXCount = x+1;