Qt制作图表生成器

基于Qt中的QCharts模块制作图表生成器软件

添加模块

QT += charts;

添加命名空间 

using namespace QtCharts;

该软件可制作多种图表

多样化主题设置

保存移植便捷快速

输入相关数据,自动生成对应图表

饼图

void MainWindow::CreatePie(int num,QString title,QString text,bool Is_checked,bool Is_title,bool Is_display)
{this->Clear();QPieSeries *m_pieSeries = new QPieSeries();QMap<QString,int> map;QMap<QString,double> map_per;QStringList list;//获取用户输入的标签以及相应占比{for(int i = 0;i<num;i++){QString str = text.section(',',i,i);QString example = str.section(' ',0,0);int value = str.section(' ',1,1).toUInt();map.insert(example,value);list.append(example);}}//处理数据,根据用户输入的数值算出相应百分比{int sum = 0;for(int i = 0;i<num;i++){sum += map.value(list.at(i)); //算出总数据}for(int i = 0;i<num;i++){double percent = map.value(list.at(i))*1.0/sum * 100;   // 24 30map_per.insert(list.at(i),percent);}}//添加标签if(Is_display){for(int i = 0;i<num;i++){QString str = QString(list.at(i) + "%1").arg(QString::number(map_per.value(list.at(i)),'f',1) + "%");m_pieSeries->append(str,map_per.value(list.at(i)));}}else{for(int i = 0;i<num;i++){m_pieSeries->append(list.at(i),map_per.value(list.at(i)));}}if(Is_checked) //片标签选项被勾选{m_pieSeries->setLabelsVisible(true);//设置所有片标签为可见}m_pieSeries->setUseOpenGL(true);//设置颜色for(int i = 0;i<num;i++){m_pieSeries->slices().at(i)->setColor(colorlist.at(i)); //饼图颜色m_pieSeries->slices().at(i)->setLabelColor(colorlist.at(i));//标签颜色}//设置主题m_chart->setTheme(QChart::ChartThemeBlueCerulean);//添加系列到QChartm_chart->addSeries(m_pieSeries);if(Is_title)Title(title);//标题样式Legend();//说明样例Show();//视图显示
}

柱状图

void MainWindow::CreateBargraph(QString title, QString X_name, QString Y_name,
int num, bool Is_title, QString X_text, QString Data_text,QString Barset,int min,int max)
{this->Clear();QStringList barsetlist;//获取用户输入的系列信息for(int i = 0;i<num;i++)  //水果,零食,饮料,烟酒{QString barset = Barset.section(',',i,i);barsetlist.append(barset);}//获取用户输入的系列数据 112,150,153,124  145,152,163,123  145,152,163,123 145,152,163,123QStringList datalist = Data_text.split(' ');QBarSeries *series = new QBarSeries();//创建系列数据for(int i = 0;i<num;i++){QList<QString> dlist = datalist.at(i).split(',');QBarSet* set = new QBarSet(barsetlist.at(i));for(int j = 0;j<dlist.size();j++){set->append(dlist.at(j).toDouble());//向系列添加数据}set->setColor(colorlist.at(i));//设置系列颜色series->append(set);}series->setVisible(true);series->setLabelsVisible(true);//设置m_chart主题,并将系列添加到m_chart上m_chart->setTheme(QChart::ChartThemeLight);//设置白色主题m_chart->setDropShadowEnabled(true);//背景阴影m_chart->addSeries(series);//添加系列到QChart上//创建X轴和Y轴QBarCategoryAxis *axisX = new QBarCategoryAxis;QStringList X_List = X_text.split(','); //一月,二月,三月,四月for(int i = 0;i<X_List.size();i++){axisX->append(X_List.at(i));}QValueAxis *axisY = new QValueAxis;//设置Y坐标的范围axisY->setRange(min,max);axisY->setLabelFormat("%d");//设置数值格式     Axis(axisX,axisY,X_name,Y_name);//设置坐标轴样式//将坐标添加到图表m_chart->setAxisX(axisX,series);m_chart->setAxisY(axisY,series);if(Is_title) //显示标题勾选Title(title);//标题样式Legend();//说明样例Show();//视图显示}

曲线

void MainWindow::CreatePolyline(QString title, int num, bool Is_title,bool Is_pos,QString X_name, QString Y_name,double X_min, double X_max, double Y_min, double Y_max, QString text, QString data)
{this->Clear();QList<QPointF> plist;QStringList namelist = text.split(',');//创建X轴和Y轴QValueAxis *axisX = new QValueAxis;axisX->setRange(X_min,X_max);    //默认则坐标为动态计算大小的(会根据数据输入的X,Y最大值确定)axisX->setLabelFormat("%.2f");QValueAxis *axisY = new QValueAxis;axisY->setRange(Y_min,Y_max);    //默认则坐标为动态计算大小的axisY->setLabelFormat("%.2f");Axis(axisX,axisY,X_name,Y_name);//设置坐标轴样式//20,50 30,60 40,70#30,60 40,45 55,60for(int i = 0;i<num;i++){QLineSeries *series1 = new QLineSeries();//实例化QLineSeries(曲线数据)series1->setColor(colorlist.at(i)); //设置曲线颜色series1->setName(namelist.at(i)); //设置名字series1->setVisible(true);series1->setPointLabelsFormat("(@xPoint,@yPoint)");series1->setPointLabelsFont(QFont("楷体",12));if(Is_pos)series1->setPointLabelsVisible(true);elseseries1->setPointLabelsVisible(false);QString pos = data.section('#',i,i);QStringList list = pos.split(' ');for(int j = 0;j<list.size();j++){double x = list.at(j).section(',',0,0).toDouble();double y = list.at(j).section(',',1,1).toDouble();series1->append(x,y);}m_chart->addSeries(series1);//添加系列到QChart上m_chart->setAxisX(axisX,series1);m_chart->setAxisY(axisY,series1);}//m_chart->createDefaultAxes();             //或者创建默认轴m_chart->setTheme(QChart::ChartThemeBlueNcs);//设置蓝色主题m_chart->setDropShadowEnabled(true);//背景阴影m_chart->setAutoFillBackground(true);  //设置背景自动填充if(Is_title) //显示标题勾选Title(title);//标题样式Legend();//说明样例Show();//视图显示
}

 折线图

void MainWindow::CreateCurve(QString title,int num,bool Is_title,bool Is_pos,QString X_name,QString Y_name,double X_min,double X_max,double Y_min,double Y_max,QString text,QString data )
{this->Clear();QList<QPointF> plist;QStringList namelist = text.split(',');//创建X轴和Y轴QValueAxis *axisX = new QValueAxis(m_chart);axisX->setRange(X_min,X_max);    //默认则坐标为动态计算大小的axisX->setLabelFormat("%.2f");QValueAxis *axisY = new QValueAxis(m_chart);axisY->setRange(Y_min,Y_max);    //默认则坐标为动态计算大小的axisY->setLabelFormat("%.2f");Axis(axisX,axisY,X_name,Y_name);//设置坐标轴样式//20,50 30,60 40,70#30,60 40,45 55,60for(int i = 0;i<num;i++){QSplineSeries *series1 = new QSplineSeries();//实例化QLineSeries(曲线数据)series1->setColor(colorlist.at(i)); //设置曲线颜色series1->setName(namelist.at(i)); //设置名字series1->setVisible(true);series1->setPointLabelsFormat("(@xPoint,@yPoint)");series1->setPointLabelsFont(QFont("楷体",12));if(Is_pos)series1->setPointLabelsVisible(true);elseseries1->setPointLabelsVisible(false);QString pos = data.section('#',i,i);QStringList list = pos.split(' ');for(int j = 0;j<list.size();j++){double x = list.at(j).section(',',0,0).toDouble();double y = list.at(j).section(',',1,1).toDouble();series1->append(x,y);}m_chart->addSeries(series1);//添加系列到QChart上m_chart->setAxisX(axisX,series1);m_chart->setAxisY(axisY,series1);}m_chart->setTheme(QChart::ChartThemeBlueNcs);//设置蓝色主题m_chart->setDropShadowEnabled(true);//背景阴影m_chart->setAutoFillBackground(true);  //设置背景自动填充//m_chart->createDefaultAxes();             //或者创建默认轴if(Is_title) //显示标题勾选Title(title);//标题样式Legend();//说明样例Show();//视图显示}

面积图

void MainWindow::CreateArea(QString title, QString seriesname, bool Is_title,QString X_name,QString Y_name, double X_min, double X_max, double Y_min, double Y_max, QString data)
{this->Clear();//25,20 26,21 30,25#25,30 26,27 29,29QStringList linelist = data.split('#');QSplineSeries* series1 = new QSplineSeries();QSplineSeries* series2 = new QSplineSeries();  for(int i = 0;i<linelist.size();i++){QStringList poslist = linelist.at(i).split(' ');for(int j = 0;j<poslist.size();j++){double x = poslist.at(j).section(',',0,0).toDouble();double y = poslist.at(j).section(',',1,1).toDouble();if(i == 0){series1->append(x,y);}else if(i == 1){series2->append(x,y);}}}QAreaSeries* areaseries = new QAreaSeries(series1,series2);areaseries->setName(seriesname);QPen pen(0x059605);pen.setWidth(4);areaseries->setPen(pen);m_chart->addSeries(areaseries);m_chart->setTheme(QChart::ChartTheme::ChartThemeBlueIcy);QValueAxis* axisX = new QValueAxis();axisX->setRange(X_min,X_max);QValueAxis* axisY = new QValueAxis();axisY->setRange(Y_min,Y_max);Axis(axisX,axisY,X_name,Y_name);//设置坐标轴样式m_chart->setAxisX(axisX,areaseries);m_chart->setAxisY(axisY,areaseries);if(Is_title) //显示标题勾选Title(title);//标题样式Legend();//说明样例Show();//视图显示}

散点图

void MainWindow::CreateScatter(QString title, int num, bool Is_title, bool Is_pos, QString X_name, QString Y_name,double X_min, double X_max, double Y_min, double Y_max, QString text, QString data)
{this->Clear();QList<QPointF> plist;QStringList namelist = text.split(',');//创建X轴和Y轴QValueAxis *axisX = new QValueAxis();axisX->setRange(X_min,X_max);    //默认则坐标为动态计算大小的axisX->setLabelFormat("%.2f");QValueAxis *axisY = new QValueAxis();axisY->setRange(Y_min,Y_max);    //默认则坐标为动态计算大小的axisY->setLabelFormat("%.2f");Axis(axisX,axisY,X_name,Y_name);//设置坐标轴样式for(int i = 0;i<num;i++){QScatterSeries *series1 = new QScatterSeries();//实例化QScatterSeries(散点数据)if(i%2==1)series1->setMarkerShape(QScatterSeries::MarkerShapeRectangle); //圆形图标elseseries1->setMarkerShape(QScatterSeries::MarkerShapeCircle); //矩形图标series1->setMarkerSize(15.0); //设置大小series1->setName(namelist.at(i)); //设置名字series1->setVisible(true);series1->setPointLabelsFormat("(@xPoint,@yPoint)");series1->setPointLabelsFont(QFont("楷体",12));if(Is_pos) //显示坐标series1->setPointLabelsVisible(true);elseseries1->setPointLabelsVisible(false);//20,50 30,60 40,70#30,60 40,45 55,60QString pos = data.section('#',i,i);QStringList list = pos.split(' ');for(int j = 0;j<list.size();j++){double x = list.at(j).section(',',0,0).toDouble();double y = list.at(j).section(',',1,1).toDouble();series1->append(x,y);}m_chart->addSeries(series1);//添加系列到QChart上m_chart->setAxisX(axisX,series1);m_chart->setAxisY(axisY,series1);}m_chart->setTheme(QChart::ChartThemeBlueNcs);//设置蓝色主题m_chart->setDropShadowEnabled(true);//背景阴影m_chart->setAutoFillBackground(true);  //设置背景自动填充//m_chart->createDefaultAxes();             //或者创建默认轴if(Is_title) //显示标题勾选Title(title);//标题样式Legend();//说明样例Show();//视图显示}

圆环图

void MainWindow::CreateDonut(int num,double inner,QString title, QString text, bool Is_checked, bool Is_title, bool Is_display)
{this->Clear();QPieSeries *m_pieSeries = new QPieSeries();m_pieSeries->setHoleSize(inner);QMap<QString,int> map;QMap<QString,double> map_per;QStringList list;//获取用户输入的标签以及相应占比{for(int i = 0;i<num;i++){QString str = text.section(',',i,i);QString example = str.section(' ',0,0);int value = str.section(' ',1,1).toUInt();map.insert(example,value);list.append(example);}}//处理数据,根据用户输入的数值算出相应百分比{int sum = 0;for(int i = 0;i<num;i++){sum += map.value(list.at(i)); //算出总数据}for(int i = 0;i<num;i++){double percent = map.value(list.at(i))*1.0/sum * 100;   // 24 30map_per.insert(list.at(i),percent);}}//添加标签if(Is_display){for(int i = 0;i<num;i++){QString str = QString(list.at(i) + "%1").arg(QString::number(map_per.value(list.at(i)),'f',1) + "%");m_pieSeries->append(str,map_per.value(list.at(i)));}}else{for(int i = 0;i<num;i++){m_pieSeries->append(list.at(i),map_per.value(list.at(i)));}}if(Is_checked) //片标签选项被勾选{m_pieSeries->setLabelsVisible(true);//设置所有片标签为可见}m_pieSeries->setUseOpenGL(true);//设置颜色for(int i = 0;i<num;i++){m_pieSeries->slices().at(i)->setColor(colorlist.at(i)); //饼图颜色m_pieSeries->slices().at(i)->setLabelColor(colorlist.at(i));//标签颜色}//设置主题m_chart->setTheme(QChart::ChartThemeBlueCerulean);//添加系列到QChartm_chart->addSeries(m_pieSeries);if(Is_title)Title(title);//标题样式Legend();//说明样例Show();//视图显示
}

项目源码:https://github.com/17359830697/createtable

关注龙木南,持续更新Qt项目,免费获取项目源码~

你们点赞收藏关注就是对我最大的支持~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50050.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET图表控件TeeChart for .NET使用教程:构建图表

本文主要介绍TeeChart for .NET使用教程中关于图表显示属性的相关内容。 图表显示特性是那些影响的整体外观图。他们包括属性和方法定义的颜色图表背景、标题和他们的立场,利润率,边界和凸凹变化,背景图像,框架和轴可见,笔颜色和宽度,3 d,墙壁等。 几乎所有这些属性可以通过Te…

.NET报表控件TeeChart使用教程:构建图表

TeeChart for .NET 是优秀的 4.0 WinForm 图表控件&#xff0c;官方独家授权汉化&#xff0c;集功能全面、性能稳定版、优惠等优势。NET 的 TeeChart for .NET 中文承诺让您在使用和学习上没有语言障碍&#xff0c;最少可以节省 30% 的开发时间。 本文主要介绍关于开始使用的第…

Luckysheet 图表(chartmix)

快速搭建luckysheet 第一步 这里用文档给的CDN方式引入 <link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css /> <link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css />…

9个可视化图表在线制作工具,总有一款适合你

这份清单包含了最受欢迎的大数据可视化分析的工具&#xff0c;无论你是需要对数据进行分析&#xff0c;还是利用可视化图表向你的客户或同事进行展示&#xff0c;该表单中总会有一款工具能够满足你的需求。 数据可视化无处不在&#xff0c;无论是PPT演示还是用可视化概念来细分…

分享2个在线图表制作工具

作者新建了QQ群&#xff1a;460430320&#xff0c;供大家交流测试心得&#xff08;培训机构勿进&#xff09;。另外&#xff0c;还会不定期上传测试资料&#xff0c;也欢迎您共享测试资料。 1、使用Excel可以轻松完成图表的制作 但是有个缺点&#xff0c;不能云端存储&#x…

应用数学家Lek-Heng Lim使用代数、几何和拓扑的工具来回答机器学习中的问题

来源&#xff1a;ScienceAI 芝加哥大学应用数学家 Lek-Heng Lim 说&#xff1a;「当它更高级时&#xff0c;任何主题都会变成数学。」 Lek-Heng Lim 渴望一场将纯数学和应用数学重新结合起来的复兴。他指出&#xff0c;这种区别在现代数学中似乎是基本的&#xff0c;实际上是最…

推特开发者 学术——【Twitter 开发者账号】使用tweepy4 搜索历史推文

关于推特开发者账号 elevated academic 请看此贴&#xff1a; 推特开发者账号申请权限 或 搜索微信公众号 twitterDeveloper 获得帮助 tweepy4.0的安装请看&#xff1a; https://blog.csdn.net/li123_123_/article/details/120473026 怎么使用tweepy4 来调用twitter api v2接…

通过微信公众号给女朋友推送消息

先看下效果图 准备工作 1、首先去微信公众平台注册成为测试号&#xff0c;点这里 然后再添加一个模板 ![在这里插入图片描述](https://img-blog.csdnimg.cn/875c3ac58c014834b33e268cf239eda2.png 模板里的json字符串示例如下 {{date.DATA}} {{remark.DATA}} 所在城市&a…

观察者模式,从公众号群发说起

每个人应该都订阅了不少微信公众号&#xff0c;那你有没有注意到微信公众号的消息呢&#xff1f;你订阅的公众号号主每发布一篇文章&#xff0c;你都会主动的接收到文章的推送&#xff0c;并不需要你点开每个订阅的公众号一一查看有没有更新&#xff0c;是不是觉得有点意思&…

推特开发者账号 学术【推特开发者文档V2系列3】——tweepy4 解决推文省略号|推文不全

关于推特开发者账号 elevated academic 请看此贴&#xff1a; 推特开发者账号申请权限 或 搜索微信公众号 twitterDeveloper 获得帮助 书接上文&#xff1a; 使用tweepy4 搜索历史推文 在使用推特 v2接口的时候&#xff0c;比如上面的文章&#xff0c;有时候会发现tweepy返…

英语积累知识(一) 2020/1/28 公众号推文翻译

2020/1/28 公众号推文翻译 翻译 This Spring Festival is doomed to be a peculiar one. Without the noise of former festivals, without visiting friends and relatives and dining together with friends, instead&#xff0c;people stay at home to amuse themselves(se…

群推王|如何引爆您的推特流量

推特营销主要吸引力在于其庞大的用户群体。它是最大的社交媒体平台之一&#xff0c;据统计每月有3.3亿活跃用户&#xff0c;为品牌知名度和增长做出了重大贡献。 尽管我们都知道推特营销的重要性&#xff0c;但是在实际运用上大家可能会遇到一些问题&#xff0c;比如您有很多粉…

微信公众号推文发布方法(内涵详细步骤)

今天又朋友专门发信息咨询微信公众号推文怎么发布以及维护方法,在大不分熟悉微信公众号发文流程的同学看来,其实是非常简单的;但是对于没有接触过这一方面的其他同学来讲,也是一件非常苦恼的事情,没有头绪。在经过一番对于朋友的指导,我也把这一流程记录在此,希望能给到…

微信公众号推文发布方法(内含详细步骤)

今天有朋友专门发信息咨询微信公众号推文怎么发布以及维护方法&#xff0c;在大部分熟悉微信公众号发文流程的同学看来&#xff0c;其实是非常简单的&#xff1b;但是对于没有接触过这一方面的其他同学来讲&#xff0c;也是一件非常苦恼的事情&#xff0c;没有头绪。在经过一番…

大模型在金融AIGC领域的前景与应用

随着大模型技术的火爆&#xff0c;人们在思考如何借助 AI 提高编程效率的同时&#xff0c;也在思考 AI 对各行各业都会带来怎样的影响。在 CSDN 与《新程序员》合作举办的「新程序员大会&#xff08;NPCon&#xff09;——AIGC 与大模型技术应用论坛」上&#xff0c;来自文因互…

刘强东终于向自己的兄弟下手了!

作者 | 胡巍巍 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 曾经有这么一位老板&#xff0c;把自己的员工当兄弟&#xff0c;称“不会开除任何一位兄弟”。 图源见水印 曾经这位老板&#xff0c;在某年的老员工授勋仪式上&#xff0c;无比仗义地说&#xff…

互联网大佬们的代码水平如何?网友:刘强东95年一个晚上赚5万

作为京东集团大佬&#xff0c;刘强东备受关注。互联网界的大佬&#xff0c;很多都是程序员出身&#xff0c;或者会写代码&#xff0c;就像雷军、马化腾、李彦宏、周鸿祎等&#xff0c;几乎都是编程高手。有人问刘强东的代码水平如何? 关于这个问题&#xff0c;得到了很多网友的…

刘强东的代码水平到底有多强?30年前就已破万!

在人工智能机器学习的领域中&#xff0c;目前最火的莫过于计算机视觉了&#xff0c;这项技术一直广受关注&#xff0c;而其中的目标检测是计算机视觉领域中最常见的问题之一。 从去年的 YOLOv4 发布后&#xff0c;目标检测框架被问的最多的问题就是&#xff1a;“有没有同学复现…

刘强东个人标签太明显,京东没有二号人物

作者 | 赵陈婷 不管个人形象上是利好还是利空&#xff0c;爱公开发声的刘强东的一举一动经常直接影响着京东的股价。不过这个周一&#xff0c;京东赶上了美国劳动节美股休市。 可以说&#xff0c;作为创始人刘强东很大程度上是和他所创办的企业京东划上等号的。这家1998年成立的…

拼多多面试官没想到ThreadLocal我用得这么溜,人直接傻掉

点赞再看&#xff0c;养成习惯&#xff0c;微信搜一搜【敖丙】关注这个互联网苟且偷生的程序员。 本文 GitHub https://github.com/JavaFamily 已收录&#xff0c;有一线大厂面试完整考点、资料以及我的系列文章。 开场白 张三最近天气很热心情不是很好&#xff0c;所以他决定…