maxlogo |
2020-04-22 13:35 |
利用QCustomPlot绘制饼图
[attachment=21528] 第一列为 南丁格尔玫瑰图 第二列为 普通的饼图和圆环饼图 第三列为 嵌套饼图 - void MainWindow::setupPieDemo(QCustomPlot *customPlot)
{ QCPPie *pie1 = new QCPPie(customPlot); QVector<QString> labels = { "rose1","rose2","rose3","rose4","rose5","rose6","rose7","rose8", }; QVector<double> values1 = { 10, 5, 15, 25, 20, 35, 30, 40 }; pie1->add(labels, values1);
pie1->setHoleSize(0.3); pie1->setRadius(0.4); pie1->setCenter(0.15, 0.25); pie1->setLabelVisible(false); pie1->setRoseType(QCPPie::rtRadius); connect(pie1, &QCPPie::hoveredSlice, [](QCPPieSlice *slice, bool hovered){ slice->setLabelVisible(hovered); });
QCPPie *pie2 = new QCPPie(customPlot); pie2->add(labels, values1);
pie2->setHoleSize(0.5); pie2->setRadius(0.4); pie2->setCenter(0.15, 0.75); pie2->setRoseType(QCPPie::rtArea);
QCPPie *pie3 = new QCPPie(customPlot); QVector<QString> labels3 = { "直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎" }; QVector<double> values3 = { 335, 310, 234, 135, 1548 }; pie3->add(labels3, values3); pie3->setRadius(0.4); pie3->setCenter(0.4, 0.25); pie3->setTextFormat("{b}:{d}%");
QCPPie *pie4 = new QCPPie(customPlot); pie4->add(labels3, values3); pie4->setRadius(0.4); pie4->setCenter(0.4, 0.75); pie4->setHoleSize(0.7); pie4->setLabelVisible(false); pie4->setLabelPosition(QCPPieSlice::lpCenter); pie4->setLabelFont(QFont("sans-serif", 30, QFont::Bold)); connect(pie4, &QCPPie::hoveredSlice, [](QCPPieSlice *slice, bool hovered){ slice->setLabelVisible(hovered); });
QCPPie *pie5 = new QCPPie(customPlot); QVector<QString> labels5 = { "直达", "营销广告", "搜索引擎" }; QVector<double> values5 = { 335, 679, 1548 }; pie5->add(labels5, values5); pie5->setRadius(0.3); pie5->setLabelPosition(QCPPieSlice::lpInside); pie5->setLabelColor(Qt::white); pie5->setSelectedMode(QCPPie::smSingle); pie5->setCenter(0.75, 0.5);
QCPPie *pie6 = new QCPPie(customPlot); QVector<QString> labels6 = { "直达", "邮件营销", "联盟广告", "视频广告", "百度", "谷歌", "必应", "其他" }; QVector<double> values6 = { 335, 310, 234, 135, 1048, 251, 147, 102 }; pie6->add(labels6, values6); pie6->setName("访问来源"); pie6->setRadius(0.55); pie6->setHoleSize(0.75); pie6->setCenter(0.75, 0.5); pie6->setTextFormat("{a}\n{b}:{c} {d}%"); }
|
|