2016-04-21 114 views
2

将QCustomPlot插件用于QT。我有阴谋可能不是线性的点,因此该图可能是这个样子enter image description hereQCustomPlot填充连接的线路

怎么过这个结果

enter image description here

但这是使用显示的内容

此代码

plotter->addGraph(); 
    plotter->graph(0)->setData(xVector, yVector); 
    plotter->xAxis->setLabel("X"); 
    plotter->yAxis->setLabel("Y"); 
    plotter->xAxis->setRange(x_data_range_min x_data_range_max); 
    plotter->yAxis->setRange(y_data_range_min, y_data_range_max); 
    plotter->replot(); 
    plotter->saveJpg("test.jpg"); 
    plotter->close(); 

现在我发现一个部分修复,通过添加此选项来获取连接线S和只显示点,

plotter->graph(0)->setLineStyle((QCPGraph::LineStyle)QCPGraph::lsNone); 
    plotter->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc , 3)); 

,结果是这样的,但是有一个问题,它的叶子,我不能有

enter image description here

所以这是一个半一个有点大胆点-解。所以我继续添加A.Sarid在下面的回复中提到的内容。我认为第一张图可以绘制精细,但任何其他图形看起来后,像这样

enter image description here

所以我不知道该解决方案可以使只有点在其从接收的顺序连接阵列

回答

2

我刚刚在几天前有同样的问题。 您需要使用QCPCurve Class而不是Graph。这里是如何做到这一点的一个小例子:

this->newCurve = new QCPCurve(ui->customPlot->xAxis, ui->customPlot->yAxis); 
ui->customPlot->addPlottable(this->newCurve); 

然后你就可以使用它,你使用图形相同的方式,例如:

this->newCurve->setData(x, y); 
+0

不工作时,数据出来很奇怪,它增加了这么多的额外的线,看起来它也产生了双重值,不知道为什么 –

+0

@Tanner它会有帮助,如果你会从你的代码中添加相关的部分,并给你一些你试图绘制的背景。 –

+0

我知道对不起,我正在编辑我的评论,好吧,让我的程序读入多个文件并绘制它们。做你所说的做,我不知道是否它以前的图的绘图点,因为它不应该由于每个方法调用重置数据,这也是我一直只用qcustomplot对象。无论如何做你说什么,第一张图后的所有内容看起来像这样http://imgur.com/NUGEMq6,我正在尝试绘制类似这样的http://imgur.com/6FAbv7L基于点,我会更新原始帖子现在 –