Точки QChart отображаются неправильно, когда я меняю оси X и Y.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Точки QChart отображаются неправильно, когда я меняю оси X и Y.

Сообщение Anonymous »

Я создаю QScatterSeries. У меня есть несколько точек, разбитых на 3 разные серии (красная, зеленая, синяя). Все это отлично отображается, когда я используюchart->createDefaultAxes(). Все точки находятся там, где и должны быть. Проблема в том, что когда я меняю оси X и Y на своей диаграмме, все мои точки отображаются неправильно. Ни один из них не находится там, где должен быть. Это странно, потому что я жестко запрограммировал свои точки.
Я пытался добавить ряд на диаграмму до и после добавления осей 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, я просто закомментирую диаграмму->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? Я предполагаю, что мне, скорее всего, придется выполнить некоторые математические действия в приложении, чтобы соответствовать новым размерам QChart, но как мне этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/689 ... -and-yaxis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»