查看完整版本: [-- 利用QCustomPlot绘制饼图 --]

QTCN开发网 -> Qt代码秀 -> 利用QCustomPlot绘制饼图 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

maxlogo 2020-04-22 13:35

利用QCustomPlot绘制饼图



[attachment=21528]


第一列为 南丁格尔玫瑰图
第二列为 普通的饼图和圆环饼图
第三列为 嵌套饼图

  1. 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}%");
    }


maxlogo 2020-04-22 13:36
以后会在个人博客中讲解

clickto 2020-04-22 20:08

colindemon 2020-12-03 14:23
QCPPie类找不到啊,在qcustomplot.cpp文件中也没有

starthere 2021-06-29 11:16
大佬这个类QCPPie,怎么弄呢,很像演示下效果,奈何没有这个类,百度好久了,解铃还须系铃人

123fdg 2021-12-08 18:34
大佬,你的QCPPie在哪...

inline 2021-12-17 14:20
emmmmmm,直到现在QCPPie这类还找不着

小阿凡达 2023-02-10 22:01


查看完整版本: [-- 利用QCustomPlot绘制饼图 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled