首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找重叠散点图和下采样散点图

查找重叠散点图和下采样散点图
EN

Stack Overflow用户
提问于 2021-01-20 20:13:06
回答 1查看 51关注 0票数 0

我有大量的数据,这些数据由点(x,y)组成,需要用散点图表示。

为了找到相同点之间的重叠并消除看不见的差异,我编写了以下代码:

代码语言:javascript
复制
void DownSampler::makeDownSample(QVector<double> keys,QVector<double> values, QVector<int> pixmapIdx, QSize resolution, sViewSize view)
{
m_calculating = true;
QTime now = QTime::currentTime();
QMap<QPair<double, double>,int> downsampledMap;

QSizeF stepValue( ( view.maxHorizontal - view.minHorizontal ) * m_downSampleRatio / (resolution.width() ),
                  ( view.maxVertical - view.minVertical ) * m_downSampleRatio/ (resolution.height() ) ) ;

for(int index = 0 ; index < keys.size() ; index++)
{
keys[index] = round((keys[index]) / stepValue.width());
keys[index] *= stepValue.width();

values[index] = round(values[index] / stepValue.height());
values[index] *= stepValue.height();

//remove same items
if((keys[index] >= view.minHorizontal) && (keys[index] <= view.maxHorizontal)) {
    if((values[index] >= view.minVertical) && (values[index] <= view.maxVertical)) {
    QPair<double, double> pairValue = qMakePair(keys[index], values[index]);
    if(!downsampledMap.contains(pairValue)){
        downsampledMap.insert(pairValue, pixmapIdx[index]);
    }
    }
}
}

QVector<int> retPixmapIdx;
QVector<double> retKey, retValue;
for(QMap<QPair<double, double>,int>::iterator iter = downsampledMap.begin() ; iter != downsampledMap.end() ; ++iter)
{
    retKey.append(iter.key().first);
    retValue.append(iter.key().second);
    retPixmapIdx.append(iter.value());
}

emit downSampledPlotReady(retKey, retValue, retPixmapIdx);
m_calculating = false;
//      qDebug() << __FUNCTION__ << "firstPointSize ==> "<< keys.size() << "downsampledSize ==> " << retKey.size() << "time ==> " << now.msecsTo(QTime::currentTime());
}

正如您所看到的,一开始,我将所有位置四舍五入为像素大小的步长,希望显示数据,然后迭代到所有创建的框并返回创建的框列表。根据这段代码,每个框都可以包含多个点,我们只返回一个位置,因此删除了重叠点。这是我的手写代码,但我认为它的性能并不是最好的。我的问题是: 1-有没有像我们的依赖一样收集所有散乱数据的库或算法? 2-我们的源代码有改进吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 17:35:34

二维方面的点云库和栅格体素可以很好地处理和下采样点云。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65809344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档