Improve consistency of correlation plots

This commit is contained in:
Gaute Lindkvist 2020-07-29 12:41:41 +02:00
parent 4f36332e52
commit ae7c4d9e31
6 changed files with 64 additions and 9 deletions

View File

@ -86,7 +86,7 @@ void RimAbstractCorrelationPlot::setCurveDefinitions( const std::vector<RiaSumma
auto timeSteps = allAvailableTimeSteps();
if ( m_timeStep().isNull() && !timeSteps.empty() )
{
m_timeStep = QDateTime::fromTime_t( *timeSteps.rbegin() );
m_timeStep = RiaQDateTimeTools::fromTime_t( *timeSteps.rbegin() );
}
}
@ -95,7 +95,7 @@ void RimAbstractCorrelationPlot::setCurveDefinitions( const std::vector<RiaSumma
//--------------------------------------------------------------------------------------------------
void RimAbstractCorrelationPlot::setTimeStep( std::time_t timeStep )
{
m_timeStep = QDateTime::fromTime_t( timeStep );
m_timeStep = RiaQDateTimeTools::fromTime_t( timeStep );
}
//--------------------------------------------------------------------------------------------------

View File

@ -164,7 +164,7 @@ RimCorrelationMatrixPlot::RimCorrelationMatrixPlot()
"",
"" );
CAF_PDM_InitField( &m_showOnlyTopNCorrelations, "ShowOnlyTopNCorrelations", false, "Show Only Top Correlations", "", "", "" );
CAF_PDM_InitField( &m_topNFilterCount, "TopNFilterCount", (size_t)15, "Number rows/columns", "", "", "" );
CAF_PDM_InitField( &m_topNFilterCount, "TopNFilterCount", 15, "Number rows/columns", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_legendConfig, "LegendConfig", "", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_selectedParametersList, "SelectedParameters", "Select Parameters", "", "", "" );
m_selectedParametersList.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
@ -236,6 +236,22 @@ void RimCorrelationMatrixPlot::selectAllParameters()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimCorrelationMatrixPlot::showTopNCorrelations() const
{
return m_showOnlyTopNCorrelations();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RimCorrelationMatrixPlot::topNFilterCount() const
{
return m_topNFilterCount();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -570,7 +586,7 @@ void RimCorrelationMatrixPlot::createMatrix()
{
sortEntries( correlationMatrixColumns, m_sortByAbsoluteValues() || m_showAbsoluteValues() );
if ( m_showOnlyTopNCorrelations && m_topNFilterCount < correlationMatrixColumns.size() )
if ( m_showOnlyTopNCorrelations && (size_t)m_topNFilterCount < correlationMatrixColumns.size() )
{
correlationMatrixColumns.erase( correlationMatrixColumns.begin() + m_topNFilterCount(),
correlationMatrixColumns.end() );
@ -584,7 +600,7 @@ void RimCorrelationMatrixPlot::createMatrix()
{
sortEntries( correlationMatrixRows, m_sortByAbsoluteValues() || m_showAbsoluteValues() );
if ( m_showOnlyTopNCorrelations && m_topNFilterCount < correlationMatrixRows.size() )
if ( m_showOnlyTopNCorrelations && (size_t)m_topNFilterCount < correlationMatrixRows.size() )
{
correlationMatrixRows.erase( correlationMatrixRows.begin() + m_topNFilterCount(), correlationMatrixRows.end() );
}

View File

@ -58,6 +58,8 @@ public:
bool sortByAbsoluteValues() const;
RimRegularLegendConfig* legendConfig();
void selectAllParameters();
bool showTopNCorrelations() const;
int topNFilterCount() const;
signals:
void matrixCellSelected( const EnsembleParameter&, const RiaSummaryCurveDefinition& );
@ -90,7 +92,7 @@ private:
caf::PdmField<bool> m_sortByAbsoluteValues;
caf::PdmField<bool> m_excludeParametersWithoutVariation;
caf::PdmField<bool> m_showOnlyTopNCorrelations;
caf::PdmField<size_t> m_topNFilterCount;
caf::PdmField<int> m_topNFilterCount;
caf::PdmField<std::vector<QString>> m_selectedParametersList;
caf::PdmChildField<RimRegularLegendConfig*> m_legendConfig;

View File

@ -81,6 +81,8 @@ RimCorrelationPlot::RimCorrelationPlot()
"",
"",
"" );
CAF_PDM_InitField( &m_showOnlyTopNCorrelations, "ShowOnlyTopNCorrelations", false, "Show Only Top Correlations", "", "", "" );
CAF_PDM_InitField( &m_topNFilterCount, "TopNFilterCount", 15, "Number rows/columns", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_selectedParametersList, "SelectedParameters", "Select Parameters", "", "", "" );
m_selectedParametersList.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
@ -109,7 +111,8 @@ void RimCorrelationPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedFie
RimAbstractCorrelationPlot::fieldChangedByUi( changedField, oldValue, newValue );
if ( changedField == &m_correlationFactor || changedField == &m_showAbsoluteValues ||
changedField == &m_sortByAbsoluteValues || changedField == &m_excludeParametersWithoutVariation ||
changedField == &m_selectedParametersList )
changedField == &m_selectedParametersList || changedField == &m_showOnlyTopNCorrelations ||
changedField == &m_topNFilterCount )
{
if ( changedField == &m_excludeParametersWithoutVariation )
{
@ -136,6 +139,12 @@ void RimCorrelationPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder
correlationGroup->add( &m_sortByAbsoluteValues );
}
correlationGroup->add( &m_showOnlyTopNCorrelations );
if ( m_showOnlyTopNCorrelations() )
{
correlationGroup->add( &m_topNFilterCount );
}
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup( "Summary Vector" );
curveDataGroup->add( &m_selectedVarsUiField );
@ -202,7 +211,9 @@ void RimCorrelationPlot::onLoadDataAndUpdate()
// buildTestPlot( chartBuilder );
addDataToChartBuilder( chartBuilder );
chartBuilder.addBarChartToPlot( m_plotWidget, Qt::Horizontal );
chartBuilder.addBarChartToPlot( m_plotWidget,
Qt::Horizontal,
m_showOnlyTopNCorrelations() ? m_topNFilterCount() : -1 );
chartBuilder.setLabelFontSize( labelFontSize() );
m_plotWidget->insertLegend( nullptr );
@ -426,3 +437,19 @@ void RimCorrelationPlot::selectAllParameters()
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCorrelationPlot::setShowOnlyTopNCorrelations( bool showOnlyTopNCorrelations )
{
m_showOnlyTopNCorrelations = showOnlyTopNCorrelations;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCorrelationPlot::setTopNFilterCount( int filterCount )
{
m_topNFilterCount = filterCount;
}

View File

@ -60,6 +60,9 @@ public:
void setSortByAbsoluteValues( bool sortByAbsoluteValues );
void selectAllParameters();
void setShowOnlyTopNCorrelations( bool showOnlyTopNCorrelations );
void setTopNFilterCount( int filterCount );
signals:
void tornadoItemSelected( const EnsembleParameter&, const RiaSummaryCurveDefinition& curveDef );
@ -86,5 +89,7 @@ private:
caf::PdmField<bool> m_showAbsoluteValues;
caf::PdmField<bool> m_sortByAbsoluteValues;
caf::PdmField<bool> m_excludeParametersWithoutVariation;
caf::PdmField<bool> m_showOnlyTopNCorrelations;
caf::PdmField<int> m_topNFilterCount;
caf::PdmField<std::vector<QString>> m_selectedParametersList;
};

View File

@ -303,8 +303,13 @@ void RimCorrelationReportPlot::onLoadDataAndUpdate()
updateMdiWindowVisibility();
if ( m_showWindow )
{
auto timeStep = m_correlationMatrixPlot->timeStep().toTime_t();
auto timeStep = m_correlationMatrixPlot->timeStep().toTime_t();
bool showOnlyTopNCorrelations = m_correlationMatrixPlot->showTopNCorrelations();
int topNFilterCount = m_correlationMatrixPlot->topNFilterCount();
m_correlationPlot->setTimeStep( timeStep );
m_correlationPlot->setShowOnlyTopNCorrelations( showOnlyTopNCorrelations );
m_correlationPlot->setTopNFilterCount( topNFilterCount );
m_parameterResultCrossPlot->setTimeStep( timeStep );
m_correlationMatrixPlot->setLabelFontSize( m_labelFontSize() );