作者:摇身一变鄙人 | 来源:互联网 | 2023-09-23 16:59
TheQChartclassmanagesthegraphicalrepresentationofthechartsseries,legends,andaxes.QChartisa
The QChart class manages the graphical representation of the chart's series,
legends, and axes.
QChart is a QGraphicsWidget that you can show in a QGraphicsScene. It manages the
graphical representation of different types of series and other chart related
class QChartView can be used instead of QChart. In addition, line, spline, area,
and scatter series can be presented as polar charts by using the QPolarChart class.
QChart类管理图表系列、图例和轴的图形表示。
QChart是一个可以在QGraphicsScene中显示的QGraphicsWidget。
它管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示。
要简单地在布局中显示图表,可以使用便利类QChartView代替QChart。
此外,直线、样条、面积和散射级数可以通过QPolarChart类来表示为极坐标图.
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
pro 加入 QT += charts
并且在程序的开头加上一句 using namespace Qtcharts或者一个宏 QT_CHARTS_USE_NAMESPACE
先来了解几个部分
QBarSet:
#include
QBarSet(const QString label, QObject *parent = Q_NULLPTR)//构造
QBarSet类表示条形图中的一组条形。
一个bar集包含每个类别的一个数据值。
假设集合的第一个值属于第一个类别,
第二个属于第二个类别,依此类推。
如果集合的值小于类别的值,则假设缺失值位于集合的末尾。对于位于集合中间的缺失值,则使用0的数值。
没有显示零值集的标签。
这 竖 立 五 个 条 就 是 QBarSet:
QBarSet *set0 = new QBarSet("Jane");
QBarSet *set1 = new QBarSet("John");
QBarSet *set2 = new QBarSet("Axel");
QBarSet *set3 = new QBarSet("Mary");
QBarSet *set4 = new QBarSet("Samantha");
*set0 <<1 <<2 <<3 <<4 <<5 <<6;// 名字为 Jane 竖条的 6个值 (分别代表6个月的值) <<符号表示赋值
*set1 <<5 <<0 <<0 <<4 <<0 <<7;
*set2 <<3 <<5 <<8 <<19<<8 <<5;
*set3 <<5 <<6 <<7 <<3 <<4 <<5;
*set4 <<9 <<7 <<5 <<3 <<1 <<2;
QBarSeries:
#include
QBarSeries(QObject *parent = Q_NULLPTR)
QBarSeries类以垂直条的形式呈现一系列数据,按类别分组。
这个类将数据绘制为一系列按类别分组的竖线,每个类别中有一个竖线添加到这个系列中。
请参阅柱状图示例,了解如何创建分组柱状图
QBarSeries *series = new QBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);
//把上面5个人的 6个月的值放到 series 待会显示
//在QChart绘图中,append()的作用主要是给柱、饼、折线赋值之类(个人理解)
QBarCategoryAxis:
#include
QBarCategoryAxis(QObject *parent = Q_NULLPTR)
QBarCategoryAxis类将类别添加到图表的轴中。
可以设置QBarCategoryAxis来显示带有标记、网格线和阴影的轴线。在刻度之间绘制类别。
它还可以与线系列一起使用,如line和BarChart示例所示。
QStringList categories;
categories <<"Jan" <<"Feb" <<"Mar" <<"Apr" <<"May" <<"Jun";
QBarCategoryAxis *axis = new QBarCategoryAxis();
axis->append(categories);
//QBarCategoryAxis:柱状图坐标文字描述
//QValueAxis:设置坐标轴范围
Qt 的demo:
#include
#include
#include
#include
#include
#include
#include
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//![1]
QBarSet *set0 = new QBarSet("Jane");
QBarSet *set1 = new QBarSet("John");
QBarSet *set2 = new QBarSet("Axel");
QBarSet *set3 = new QBarSet("Mary");
QBarSet *set4 = new QBarSet("Samantha");
*set0 <<1 <<2 <<3 <<4 <<5 <<6;// Jane 6个月份的值
*set1 <<5 <<0 <<0 <<4 <<0 <<7;
*set2 <<3 <<5 <<8 <<19<<8 <<5;
*set3 <<5 <<6 <<7 <<3 <<4 <<5;
*set4 <<9 <<7 <<5 <<3 <<1 <<2;
//![1]
//![2]
QBarSeries *series = new QBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);
//![2]
//![3]
QChart *chart = new QChart(); // 实例化QChart
chart->addSeries(series); //往Chart里添加series
chart->setTitle("Simple barchart example"); //设置表格头
chart->setAnimationOptions(QChart::SeriesAnimations);
//![3]
//![4]
QStringList categories; //创建字符串List
categories <<"Jan" <<"Feb" <<"Mar" <<"Apr" <<"May" <<"Jun";
QBarCategoryAxis *axis = new QBarCategoryAxis(); //实例化坐标轴文字标识轴
axis->append(categories); //将字符串列表append到文字标识轴里
chart->createDefaultAxes();//创建默认的坐标轴(笛卡尔坐标),一定要有这一句
chart->setAxisX(axis, series);//设置坐标轴
//![4]
//![5]
chart->legend()->setVisible(true); //设置图例为显示状态
chart->legend()->setAlignment(Qt::AlignBottom);//设置图例的显示位置在底部
//![5]
//![6]
//显示容器 QChartView
QChartView *chartView = new QChartView(chart); //添加Chart到QChartView上
chartView->setRenderHint(QPainter::Antialiasing);
//![6]
//![7]
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(420, 300);
window.show();
//![7]
return a.exec();
}
如果数据量大(百万数据不卡顿)并且交互多的话 推荐使用QCustomplot