柱状图是比较常用的数据可视化工具。

下图为柱状图的demo演示效果,可以将某和柱状进行隐藏。

开发环境配置

所有的QChart开发环境配置都差不多。

1. charts开发环境安装

sudo apt install libqt5charts5-dev

2. 头文件中需要添加QT_CHARTS_USE_NAMESPACE

QT_CHARTS_USE_NAMESPACE

3. 在项目中添加charts

QT += core gui charts

代码分析

QBarSeries是柱状图类。QBarSet表示每一个柱。

1. 初始化柱

QBarSet表示每一个柱状,可以通过<< 或者append方法添加数据。

void Widget::initBarSet()
{QBarSet *set0 = new QBarSet("张三");  //QBarSet *set1 = new QBarSet("李四");QBarSet *set2 = new QBarSet("王五");// 给每一个柱状加数据。数据的个与m_ptrAxisX.append个数一致。*set0 << 158 << 685 << 458 << 260 << 354;  //向零食数据添加这5个月的销售数据*set1 << 350 << 725 << 602 << 523 << 458;*set2 << 222 << 350 << 598 << 480 << 687;m_listBarSet.append(set0);m_listBarSet.append(set1);m_listBarSet.append(set2);foreach (auto item, m_listBarSet) {m_ptrBarSeries->append(item);}
}

2. 横纵坐标设置

QBarCategoryAxis *m_ptrAxisX为横坐标。可以直接通过append设置横坐标的范围。

QValueAxis *m_ptrAxisY为纵坐标,可以设置range范围以及tickCount按照等分。

    m_ptrAxisX->append(tr("一月"));m_ptrAxisX->append(tr("二月"));m_ptrAxisX->append(tr("三月"));m_ptrAxisX->append(tr("四月"));m_ptrAxisX->append(tr("五月"));m_ptrAxisX->setLabelsColor(QColor(7, 28, 96));m_ptrAxisY->setRange(0, 600);m_ptrAxisY->setTickCount(11);m_ptrChart->setAxisX(m_ptrAxisX, m_ptrBarSeries);m_ptrChart->setAxisY(m_ptrAxisY, m_ptrBarSeries);

3. 设置版面

setTitle:设置标题。

setAlignment:设置legend位置。

setColor:设置颜色

  m_ptrChart->setTitle(tr("销售额度"));m_ptrChart->legend()->setVisible(true);//是否允许对legend进行设置,就相当于一个总开关,只有打开了才能对legend进行操作m_ptrChart->legend()->setAlignment(Qt::AlignBottom);  //设置位置m_ptrChart->legend()->setBackgroundVisible(true);m_ptrChart->legend()->setAutoFillBackground(true);m_ptrChart->legend()->setColor(QColor(222, 233, 251));  //设置颜色m_ptrChart->legend()->setLabelColor(QColor(0, 100, 255));

4. 柱状图隐藏响应

百度查询了这个没法直接隐藏。其实我们可以通过设置其透明度来设置其隐藏效果。

获取BarSet

QBarLegendMarker *marker = qobject_cast<QBarLegendMarker *>(sender());
QBarSet *barset = marker->barset();

获取原有颜色并且设置透明度

QColor barsetColor(barset->color());
qreal alpha = barsetColor.alphaF();
barsetColor.setAlphaF(alpha);
barset->setColor(barsetColor);

源代码

代码传送门https://gitcode.net/arv002/qt/-/tree/master/QtChartDemo/QBarSeriesDemo/BarSeries

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent), m_ptrChart(new QChart), m_ptrChartview(new QChartView(m_ptrChart, this)), m_ptrBarSeries(new QBarSeries), m_ptrAxisY(new QValueAxis), m_ptrAxisX(new QBarCategoryAxis){qsrand(static_cast<uint>(QTime(0, 0, 0).secsTo(QTime::currentTime())));initUI();initConnect();
}Widget::~Widget()
{foreach (auto item, m_listBarSet) {delete item;}m_listBarSet.clear();
}void Widget::initUI()
{m_ptrChart->addSeries(m_ptrBarSeries);m_ptrChartview->setFixedSize(600, 600);m_ptrAxisX->append(tr("一月"));m_ptrAxisX->append(tr("二月"));m_ptrAxisX->append(tr("三月"));m_ptrAxisX->append(tr("四月"));m_ptrAxisX->append(tr("五月"));m_ptrAxisX->setLabelsColor(QColor(7, 28, 96));m_ptrAxisY->setRange(0, 600);m_ptrAxisY->setTickCount(11);m_ptrChart->setAxisX(m_ptrAxisX, m_ptrBarSeries);m_ptrChart->setAxisY(m_ptrAxisY, m_ptrBarSeries);m_ptrChart->setTitle(tr("销售额度"));m_ptrChart->legend()->setVisible(true);//是否允许对legend进行设置,就相当于一个总开关,只有打开了才能对legend进行操作m_ptrChart->legend()->setAlignment(Qt::AlignBottom);  //设置位置m_ptrChart->legend()->setBackgroundVisible(true);m_ptrChart->legend()->setAutoFillBackground(true);m_ptrChart->legend()->setColor(QColor(222, 233, 251));  //设置颜色m_ptrChart->legend()->setLabelColor(QColor(0, 10    0, 255));//设置标签颜色 m_ptrChart->legend()->setMaximumHeight(50);//设置最大高度initBarSet();
}void Widget::initBarSet()
{QBarSet *set0 = new QBarSet("张三");  //QBarSet *set1 = new QBarSet("李四");QBarSet *set2 = new QBarSet("王五");*set0 << 158 << 685 << 458 << 260 << 354;  //向零食数据添加这5个月的销售数据*set1 << 350 << 725 << 602 << 523 << 458;*set2 << 222 << 350 << 598 << 480 << 687;m_listBarSet.append(set0);m_listBarSet.append(set1);m_listBarSet.append(set2);foreach (auto item, m_listBarSet) {m_ptrBarSeries->append(item);}
}void Widget::initConnect()
{const auto markers = m_ptrChart->legend()->markers();for (QLegendMarker *marker : markers) {// Disconnect possible existing connection to avoid multiple connectionsQObject::disconnect(marker, &QLegendMarker::clicked, this,&Widget::handleMarkerClicked);QObject::connect(marker, &QLegendMarker::clicked, this,&Widget::handleMarkerClicked);}
}void Widget::handleMarkerClicked()
{QBarLegendMarker *marker = qobject_cast<QBarLegendMarker *>(sender());//断言Q_ASSERT(marker);switch (marker->type()) {case QLegendMarker::LegendMarkerTypeBar: {//控序列隐藏/显示// Toggle visibility of series// marker->setVisible(false);// marker->series()->setVisible(!marker->series()->isVisible());// Turn legend marker back to visible, since hiding series also// hides the marker and we don't want it to happen now.// 获取当前选中的BarSet.我们可以通过修改barSet的透明度设置其隐藏QBarSet *barset = marker->barset();QColor barsetColor(barset->color());qreal alpha = barsetColor.alphaF();marker->setVisible(true);//修改图例// Dim the marker, if series is not visibleif (1 == alpha) {alpha = 0.1;} else {alpha = 1;}QColor color;QBrush brush = marker->labelBrush();color = brush.color();color.setAlphaF(alpha);brush.setColor(color);marker->setLabelBrush(brush);brush = marker->brush();color = brush.color();color.setAlphaF(alpha);brush.setColor(color);marker->setBrush(brush);QPen pen = marker->pen();color = pen.color();color.setAlphaF(alpha);pen.setColor(color);marker->setPen(pen);barsetColor.setAlphaF(alpha);barset->setColor(barsetColor);break;}default: {qInfo() << "Unknown marker type";break;}}
}
void Widget::mousePressEvent(QMouseEvent *)
{foreach (auto item, m_listBarSet) {for (int i = 0; i < item->count(); i++) {item->remove(i);}}foreach (auto item, m_listBarSet) {for (int i = 0; i < 5; i++) {item->append(qrand() % 600);}}
}

数据可视化工具(QBarSeries柱状图)相关推荐

  1. processing文本可视化_推荐7个数据可视化工具,让你的信息快速生成可视化

    现在我们对可视化信息的需求越来越高,可视化信息比传统的文本信息更吸引眼球,方便阅读,加深记忆,因此也可以更快地被人们传播出去.近年来涌现出了许多数据可视化工具.有哪些值得使用呢?下面与大家分享九大数据 ...

  2. 52个实用的数据可视化工具!

    来源丨原力大数据 从数据获得信息的最佳方式之一是,通过视觉化方式,快速抓住要点信息.另外,通过视觉化呈现数据,也揭示了令人惊奇的模式和观察结果,是不可能通过简单统计就能显而易见看到的模式和结论. 目前 ...

  3. 一款 0 门槛轻松易上手的数据可视化工具

    在职场中有一项共识是:数据驱动业务价值.业务在产品.运营.开发.技术支持.销售等环节都有着大量的数据需求, 市面上也出现了很多 BI 可视化工具,但如果能同时具备以下特性,则可以称为一款优秀的 BI ...

  4. 腾讯TEG团队打造轻量级数据可视化工具——小马BI【强烈推荐大数据行业学习】

    推荐一个BI工具--小马BI 在职场中有一项共识是:数据驱动业务价值.业务在产品.运营.开发.技术支持.销售等环节都有着大量的数据需求, 市面上也出现了很多 BI 可视化工具,但如果能同时具备以下特性 ...

  5. python可视化图表工具_酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具...

    原标题:酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具 不少Python用户的一大诉求是做出各种酷炫的可视化图表,而这就需要了解清楚工具特色,才好在制作不同类型图表顺利找到适合自己 ...

  6. 如何选择数据可视化工具?

    如何选用数据可视化工具?在回答这个问题之前现需要回答另外一个问题,你需要用这些数据可视化工具来做什么,实现什么目的. 也许你有一个完整的想法,已经通过验证了,需要用更直观易懂的方式来展现,从而讲述一个 ...

  7. matplotlib画图_Python数据可视化工具Matplotlib之画图(四)(饼状图)

    概述 在<Python数据可视化工具Matplotlib之画图(三)(柱状图)>中讲述了如何通过Matplotlib画柱状图,本文讲述如何通过Matplotlib画饼状图. matplot ...

  8. 盘点10款超好用的数据可视化工具

    现代社会早已进入读图时代,图像在一定上程度上取代了文字,占据了主导地位.对于数据分析来说,一张清晰的可视化图表确实比纷繁复杂的数字更清晰美观.随着科技的发展以及可视化需求的急剧增大,涌现了大批的数据可 ...

  9. Linux 数据可视化工具

    Linux 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这方面的工具有很多开放源码实现,包括 gnuplot.GNU Oc ...

最新文章

  1. nginx配置文件及工作原理详解
  2. github 修改项目为public_GitHub仓库中项目的语言属性可以这样修改,有点简单
  3. JS 二级菜单栏的tab切换
  4. python并行计算numpy_【Nature文章摘录】NumPy: 从单机到分布式并行计算
  5. inline-block,一个奇怪的问题:中间div掉下来
  6. Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Request body too large
  7. python初学者怎么入门-python怎么入门啊?
  8. iPhoneiPad DFU及恢复模式刷机、降级教程
  9. 【计算机网络】宽带接入技术
  10. 美图秀秀api实现图片的裁剪及美化
  11. mysql容灾备份和恢复_关于容灾备份和恢复
  12. ios设置阴历或农历生日(以iPhone X为例)
  13. 大白菜pe安装服务器系统安装教程视频教程,大白菜u盘启动盘制作工具安装系统的详细方法...
  14. hibernate报错could not insert
  15. matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?
  16. matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf
  17. H2.64和H2.65编码区别
  18. 六十五、完成Vue项目去哪儿网App首页开发(来源:慕课网)
  19. 三八节与芊芊一起赏雪
  20. 无锡设计培训——服装制版,能自学吗?

热门文章

  1. 报告显示:风险环境和外挂类型关系密切 加速器外挂在模拟器环境里最多
  2. Win 10操作系统与艾字节大数据的密切关系
  3. 东北大学秦皇岛分校acm俱乐部week4
  4. 采坑:天地图token使用限制
  5. c++:利用socket基于TPC/IP实现通信 在线聊天
  6. zz--周末给大家一些怀旧的思考:惠斯通电桥
  7. 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?
  8. Win7+虚拟机OS X 10.8.5+Xcode4.6.3+越狱iPhone4+iOS5.1.1真机调试及生成ipa包
  9. Ant Design of Vue @1.7.8 学习笔记(Vue2版本)
  10. 计算相似度评价值体系:欧几里德距离和皮尔逊相关度