一个图中有多个系列的 Qt 条形图
Qt bar chart with many series in one plot
我正在创建 QChart 条形图。
我有一个以前未知数量的 QBarSets(我知道运行时 QBarSets 的数量 - 但可能在 1-10 之间)和一个可能很多的类别(10-1000)。
QVector<QBarSet*> barSets;
for(int i=0; i<n; ++i){ // n between 1-10
QBarSet *set = new QBarSet("");
for(int j=0; j<m; ++j){ // m between 1-1000
*set << someValue;
}
barSets.push_back(set);
}
QBarSeries* series = new QBarSeries();
for(int i=0; i<barSets.count(); ++i){
series->append(barSets.at(i));
}
其他的几乎和描述的一样here。
我的问题是每个条都变得非常非常小。我想用固定宽度绘制每个条形图,并可能使用水平滚动条滚动类别。
有人有一个如何做到这一点的小例子吗?
原来答案很简单。
您可以非常简单地使用
grep QBarCategoryAxis
auto axis = qobject_cast<QBarCategoryAxis*>(chart->axisX());
然后简单地通过名称控制可见类别
auto categories = axis->categories();
QString min = categories.at(n);
QString max = categories.at(m);
axis->setMin(min);
axis->setMax(max);
我已使用 horizontalScrollBar_valueChanged
信号更改最小和最大类别编号(n
、m
)。
我正在创建 QChart 条形图。 我有一个以前未知数量的 QBarSets(我知道运行时 QBarSets 的数量 - 但可能在 1-10 之间)和一个可能很多的类别(10-1000)。
QVector<QBarSet*> barSets;
for(int i=0; i<n; ++i){ // n between 1-10
QBarSet *set = new QBarSet("");
for(int j=0; j<m; ++j){ // m between 1-1000
*set << someValue;
}
barSets.push_back(set);
}
QBarSeries* series = new QBarSeries();
for(int i=0; i<barSets.count(); ++i){
series->append(barSets.at(i));
}
其他的几乎和描述的一样here。
我的问题是每个条都变得非常非常小。我想用固定宽度绘制每个条形图,并可能使用水平滚动条滚动类别。
有人有一个如何做到这一点的小例子吗?
原来答案很简单。 您可以非常简单地使用
grep QBarCategoryAxisauto axis = qobject_cast<QBarCategoryAxis*>(chart->axisX());
然后简单地通过名称控制可见类别
auto categories = axis->categories();
QString min = categories.at(n);
QString max = categories.at(m);
axis->setMin(min);
axis->setMax(max);
我已使用 horizontalScrollBar_valueChanged
信号更改最小和最大类别编号(n
、m
)。