当我更改 XAxis 和 YAxis 时,QChart 点绘制不正确
QChart points are incorrectly plotted when I change the XAxis and YAxis
我正在制作一个 QScatterSeries。我在 3 个不同的系列(红色、绿色、蓝色)中绘制了一些点。当我使用 chart->createDefaultAxes()
时,一切都非常完美。所有的点都在他们应该在的地方。问题是,当我更改图表中的 X 轴和 Y 轴时,我所有的点都绘制不正确。 None 其中有它们应该在的位置。这很奇怪,因为我已经硬编码了我的观点。
我曾尝试在将 X 轴和 Y 轴添加到图表之前和之后将我的系列添加到图表中,认为这可能导致我的观点变得混乱。但这并没有解决它。
我使用默认坐标轴时的图表:
char *myargv[2];
int myargc = 1;
myargv[0] = strdup("");
// First, create QApplication
QApplication a(myargc, myargv);
// Create our red, green, blue acceleration series
redSeries = new QScatterSeries;
redSeries->setMarkerSize(15.0);
redSeries->append(1, 20);
redSeries->append(2, 30);
redSeries->append(3, 44);
redSeries->setColor(Qt::red);
greenSeries = new QScatterSeries;
greenSeries->setMarkerSize(15.0);
greenSeries->append(1, 10);
greenSeries->append(2, -9);
greenSeries->append(3, 20);
greenSeries->setColor(Qt::green);
blueSeries = new QScatterSeries;
blueSeries->setMarkerSize(15.0);
blueSeries->append(1, -20);
blueSeries->append(2, -10);
blueSeries->append(3, 0);
blueSeries->setColor(Qt::blue);
// Customize our chart
QChart *chart = new QChart();
chart->createDefaultAxes();
chart->setTitle("Example Plot");
QValueAxis *axisX = new QValueAxis;
axisX->setRange(0, 130);
axisX->setTickCount(10);
QValueAxis *axisY = new QValueAxis;
axisY->setRange(-50, 50);
axisY->setTickCount(10);
// Add series to chart
chart->addSeries(redSeries);
chart->addSeries(greenSeries);
chart->addSeries(blueSeries);
// Create chartView
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
//chartView->chart()->setAxisX(axisX);
//chartView->chart()->setAxisY(axisY);
// Render everything within our Window
QMainWindow w;
w.setCentralWidget(chartView);
w.resize(400, 300);
w.show();
return a.exec();
}
当我尝试使用自己的 X 和 Y 轴时,我只是简单地注释掉 chart->createDefaultAxes()
并在
中回复
//chartView->chart()->setAxisX(axisX);
//chartView->chart()->setAxisY(axisY);
这导致我得到错误绘制的图表:
我的问题是,我做错了什么?此外,在我的代码的其他部分,我计划动态接收数据并使用该数据在我的图表上绘制点,例如:
while (receivingData) {
redSeries->append(x, y); // Will not work because my hard-coded points (above) do not work
greenSeries->append(x, y);
blueSeries->append(x, y);
}
我需要做什么才能确保我的所有点都正确绘制在我的自定义 X 轴和 Y 轴上?我假设我很可能必须在我的 append
中做一些数学运算来匹配我的 QChart 的新维度,但我该如何实现呢?
答案是,添加调用
QAbstractSeries::attachAxis
某处,
我怀疑。
我在另一个 post 中找到了问题的答案。
张贴在这里以防对某人有帮助
我正在制作一个 QScatterSeries。我在 3 个不同的系列(红色、绿色、蓝色)中绘制了一些点。当我使用 chart->createDefaultAxes()
时,一切都非常完美。所有的点都在他们应该在的地方。问题是,当我更改图表中的 X 轴和 Y 轴时,我所有的点都绘制不正确。 None 其中有它们应该在的位置。这很奇怪,因为我已经硬编码了我的观点。
我曾尝试在将 X 轴和 Y 轴添加到图表之前和之后将我的系列添加到图表中,认为这可能导致我的观点变得混乱。但这并没有解决它。
我使用默认坐标轴时的图表:
char *myargv[2];
int myargc = 1;
myargv[0] = strdup("");
// First, create QApplication
QApplication a(myargc, myargv);
// Create our red, green, blue acceleration series
redSeries = new QScatterSeries;
redSeries->setMarkerSize(15.0);
redSeries->append(1, 20);
redSeries->append(2, 30);
redSeries->append(3, 44);
redSeries->setColor(Qt::red);
greenSeries = new QScatterSeries;
greenSeries->setMarkerSize(15.0);
greenSeries->append(1, 10);
greenSeries->append(2, -9);
greenSeries->append(3, 20);
greenSeries->setColor(Qt::green);
blueSeries = new QScatterSeries;
blueSeries->setMarkerSize(15.0);
blueSeries->append(1, -20);
blueSeries->append(2, -10);
blueSeries->append(3, 0);
blueSeries->setColor(Qt::blue);
// Customize our chart
QChart *chart = new QChart();
chart->createDefaultAxes();
chart->setTitle("Example Plot");
QValueAxis *axisX = new QValueAxis;
axisX->setRange(0, 130);
axisX->setTickCount(10);
QValueAxis *axisY = new QValueAxis;
axisY->setRange(-50, 50);
axisY->setTickCount(10);
// Add series to chart
chart->addSeries(redSeries);
chart->addSeries(greenSeries);
chart->addSeries(blueSeries);
// Create chartView
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
//chartView->chart()->setAxisX(axisX);
//chartView->chart()->setAxisY(axisY);
// Render everything within our Window
QMainWindow w;
w.setCentralWidget(chartView);
w.resize(400, 300);
w.show();
return a.exec();
}
当我尝试使用自己的 X 和 Y 轴时,我只是简单地注释掉 chart->createDefaultAxes()
并在
//chartView->chart()->setAxisX(axisX);
//chartView->chart()->setAxisY(axisY);
这导致我得到错误绘制的图表:
我的问题是,我做错了什么?此外,在我的代码的其他部分,我计划动态接收数据并使用该数据在我的图表上绘制点,例如:
while (receivingData) {
redSeries->append(x, y); // Will not work because my hard-coded points (above) do not work
greenSeries->append(x, y);
blueSeries->append(x, y);
}
我需要做什么才能确保我的所有点都正确绘制在我的自定义 X 轴和 Y 轴上?我假设我很可能必须在我的 append
中做一些数学运算来匹配我的 QChart 的新维度,但我该如何实现呢?
答案是,添加调用
QAbstractSeries::attachAxis
某处, 我怀疑。
我在另一个 post 中找到了问题的答案。
张贴在这里以防对某人有帮助