При построении графика ряда линий в небольшом диапазоне с использованием библиотеки QtChart (например, между 0 и 1e-15) ряд линий, по-видимому, не визуализируется. Использование больших чисел с одинаковым точным кодом прекрасно работает.
Я пытался свести мой код, чтобы он был максимально простым, чтобы найти ошибки, которые я делал, но я не могу их найти. Я подозреваю, что это может быть ошибкой в Qt, но я публикую здесь сообщение на случай, если что-то пропустил, прежде чем отправлять отчет об ошибке.
Мне также не удалось найти в Интернете никакой информации о людях, испытывающих подобные ошибки, но это может быть просто признаком того, что мое Google-фу слабое.
Первоначально я столкнулся с этой ошибкой, используя PyQt5, но воссоздал ее в C ++, чтобы убедиться, что это не специфическая ошибка PyQt5.
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QLegend>
#include <QtCharts/QValueAxis>
QT_CHARTS_USE_NAMESPACE
#define FACTOR 1e-13
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLineSeries *lineseries = new QLineSeries();
lineseries->setName("series");
lineseries->setUseOpenGL(true);
for (double i = 0.0; i < 10.0; i += 1.0)
lineseries->append(QPointF(i*FACTOR, i * FACTOR));
QChart *chart = new QChart();
chart->addSeries(lineseries);
chart->setTitle("Line example");
QValueAxis *axisX = new QValueAxis();
chart->setAxisX(axisX, lineseries);
QValueAxis *axisY = new QValueAxis();
chart->setAxisY(axisY, lineseries);
axisY->setRange(0.0, 9.0*FACTOR);
axisX->setLabelFormat("%.3E");
axisY->setLabelFormat("%.3E");
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(840, 900);
window.show();
return a.exec();
}
Запустив прикрепленный код, я ожидаю увидеть линейный ряд линий, отображаемый на графике, но я не вижу ничего визуализированного.
Изменение константы FACTOR
на что-то> = 1e-12 приведет к правильному отображению ряда линий.