void PlotViewInterpolation::update() { ML::MatNxN C; int const& n = _p->_model->getDataDimension(); for (int t = 0; t < TOTAL_INTERP; ++t) { for (int d = 0; d < n; ++d) { int c_id = n * t + d; INTERP_TYPE type = static_cast<INTERP_TYPE>(t); _p->_model->get1dCurve(type, d, 10.0f, &C); clearCurve(c_id); setCurveData(c_id, C, t); } } for (int d = 0, n = _p->_model->getDataDimension(); d < n; ++d) { int c_id = n * TOTAL_INTERP + d; _p->_model->get1dRegression(d, 10.0f, &C); clearCurve(c_id); setCurveData(c_id, C, TOTAL_INTERP); } }
void QgsMapToolCapture::clean() { stopCapturing(); clearCurve(); }
bool PSV_ChartRealItem::addCurve(const QMap<double, double> &data, const PSV_CurveParam &curveParam) { QString curveName = curveParam.m_curveName; if(curveParam.m_isReplace) { clearCurve(curveName); } if(m_curveDataMap.contains(curveName) || curveName.isEmpty()) { return false; } if(data.count() <= 0) { PSV_Public::printMes(QString::fromLocal8Bit("warning:数据为空")); return false; } QMapIterator<double,double> iter(data); PSV_CurveInfo curveInfo(curveName); curveInfo.m_axisType = curveParam.m_axisType; setCurrentAxisType(curveInfo.m_axisType); curveInfo.m_curveType = curveParam.m_curveType; double sum = 0.0; double max_y = 0.0; double min_y = 0.0; // double max_y_pointX = 0.0; // double min_y_pointX = 0.0; double max_x = 0.0; double min_x = 0.0; bool isFisrt = true; while(iter.hasNext()) { iter.next(); double value = iter.value(); if(isFisrt) { isFisrt = false; max_y = value; min_y = value; sum = value; max_x = iter.key(); min_x = iter.key(); // max_y_pointX = iter.key(); // min_y_pointX = iter.key(); } else { sum += value; if(max_y < value) { max_y = value; // max_y_pointX = iter.key(); } if(min_y > value) { min_y = value; // min_y_pointX = iter.key(); } if(max_x < iter.key()) { max_x = iter.key(); } if(min_x > iter.key()) { min_x = iter.key(); } } } if(*m_isFisrtCurve_curP) { *m_max_y_curP = max_y; *m_min_y_curP = min_y; if(m_isFisrtCurve_left && m_isFisrtCurve_right) { m_rangeX.first = min_x; m_rangeX.second = max_x; } *m_isFisrtCurve_curP = false; } else { if(*m_max_y_curP < max_y) { *m_max_y_curP = max_y; } if(*m_min_y_curP > min_y) { *m_min_y_curP = min_y; } } if(m_rangeX.first > min_x) { m_rangeX.first = min_x; } if(m_rangeX.second < max_x) { m_rangeX.second = max_x; } m_max_x = m_rangeX.second; m_min_x = m_rangeX.first; double avg_y = sum / data.count(); QStringList textList; textList.append(QString("%1:").arg(curveName)); textList.append(QString(" %1:%2").arg(QString::fromLocal8Bit("最大值")).arg(QString::number(max_y,'f',m_decimal))); textList.append(QString(" %1:%2").arg(QString::fromLocal8Bit("最小值")).arg(QString::number(min_y,'f',m_decimal))); textList.append(QString(" %1:%2").arg(QString::fromLocal8Bit("平均值")).arg(QString::number(avg_y,'f',m_decimal))); QString staHtmText = PSV_Public::getStaText(textList/*,m_staFont*/); curveInfo.m_staHtmText = staHtmText; curveInfo.m_staText = textList.join(""); curveInfo.m_curveDataMap = data; m_curveDataMap.insert(curveName,curveInfo); if(curveParam.m_isUpdate) { refreshItem(); } return true; }
bool PSV_ChartDateTimeItem::addCurve(const QMap<QDateTime, double> &data , const PSV_CurveParam &curveParam , bool isDate) { QString curveName = curveParam.m_curveName; if(curveParam.m_isReplace) { clearCurve(curveName); } if(m_curveDataMap.contains(curveName) || curveName.isEmpty()) { return false; } if(data.count() <= 0) { PSV_Public::printMes(QString::fromLocal8Bit("warning:数据为空")); return false; } QMap<double,double> curveData; QMapIterator<QDateTime,double> iter(data); PSV_CurveInfo curveInfo(curveName); curveInfo.m_axisType = curveParam.m_axisType; setCurrentAxisType(curveInfo.m_axisType); curveInfo.m_curveType = curveParam.m_curveType; if(isDate) { curveInfo.m_dataType = PSV::E_DATATYPE_DATE; } else { curveInfo.m_dataType = PSV::E_DATATYPE_DATETIME; } bool isChangedY = false; bool isChangedX = false; //========================== double sum = 0.0; double max_y = 0.0; double min_y = 0.0; QDateTime max_y_pointX = PSV_BEGIN_DATETIME; QDateTime min_y_pointX = PSV_BEGIN_DATETIME; QDateTime max_x = PSV_BEGIN_DATETIME; QDateTime min_x = PSV_BEGIN_DATETIME; bool isFisrt = true; while(iter.hasNext()) { iter.next(); if(!iter.key().isValid()) { continue; } double value = iter.value(); if(isFisrt) { isFisrt = false; max_y = value; min_y = value; sum = value; max_y_pointX = iter.key(); min_y_pointX = iter.key(); max_x = iter.key(); min_x = iter.key(); } else { sum += value; if(max_y < value) { max_y = value; max_y_pointX = iter.key(); } if(min_y > value) { min_y = value; min_y_pointX = iter.key(); } if(max_x < iter.key()) { max_x = iter.key(); } if(min_x > iter.key()) { min_x = iter.key(); } } int sec = m_beginDateTime.secsTo(iter.key());// curveData.insert(sec,iter.value()); } if(*m_isFisrtCurve_curP) { *m_max_y_curP = max_y; *m_min_y_curP = min_y; if(m_isFisrtCurve_left && m_isFisrtCurve_right) { m_max_dateTime = max_x; m_min_dateTime = min_x; } *m_isFisrtCurve_curP = false; } else { if(*m_max_y_curP < max_y) { *m_max_y_curP = max_y; } if(*m_min_y_curP > min_y) { *m_min_y_curP = min_y; } } if(m_max_dateTime < max_x) { m_max_dateTime = max_x; } if(m_min_dateTime > min_x) { m_min_dateTime = min_x; } // PSV_Public::printMes(max_y_pointX,"max_y_pointX"); // PSV_Public::printMes(min_y_pointX,"min_y_pointX"); m_max_x = m_max_dateTime; m_min_x = m_min_dateTime; // PSV_Public::printMes(m_max_x,"m_max_x"); // PSV_Public::printMes(m_min_x,"m_min_x"); //====================================== QString dateForm = curveInfo.m_dataType == PSV::E_DATATYPE_DATETIME ? "yyyy-MM-dd hh:mm:ss" : "yyyy-MM-dd"; double avg_y = sum / data.count(); QStringList textList; int dml = decimal(); textList.append(QString("%1:").arg(curveName)); textList.append(QString(" %1:(%2,%3)").arg(QString::fromLocal8Bit("最大值")) .arg(max_y_pointX.toString(dateForm)) .arg(QString::number(max_y,'f',dml))); textList.append(QString(" %1:(%2,%3)") .arg(QString::fromLocal8Bit("最小值")) .arg(min_y_pointX.toString(dateForm)) .arg(QString::number(min_y,'f',dml))); textList.append(QString(" %1:%2") .arg(QString::fromLocal8Bit("平均值")) .arg(QString::number(avg_y,'f',dml))); QString staHtmText = PSV_Public::getStaText(textList/*,m_staFont*/); curveInfo.m_staHtmText = staHtmText; curveInfo.m_staText = textList.join(""); //====================================== curveInfo.m_curveDataMap = curveData; m_curveDataMap.insert(curveName,curveInfo); if(curveParam.m_isUpdate) { if(isChangedY || isChangedX) { // PSV_Public::printMes("19refreshItem"); refreshItem(); } } return true; }