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(); auto timeSteps = allAvailableTimeSteps();
if ( m_timeStep().isNull() && !timeSteps.empty() ) 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 ) 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_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_legendConfig, "LegendConfig", "", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_selectedParametersList, "SelectedParameters", "Select Parameters", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_selectedParametersList, "SelectedParameters", "Select Parameters", "", "", "" );
m_selectedParametersList.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP ); 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() ); 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.erase( correlationMatrixColumns.begin() + m_topNFilterCount(),
correlationMatrixColumns.end() ); correlationMatrixColumns.end() );
@ -584,7 +600,7 @@ void RimCorrelationMatrixPlot::createMatrix()
{ {
sortEntries( correlationMatrixRows, m_sortByAbsoluteValues() || m_showAbsoluteValues() ); 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() ); correlationMatrixRows.erase( correlationMatrixRows.begin() + m_topNFilterCount(), correlationMatrixRows.end() );
} }

View File

@ -58,6 +58,8 @@ public:
bool sortByAbsoluteValues() const; bool sortByAbsoluteValues() const;
RimRegularLegendConfig* legendConfig(); RimRegularLegendConfig* legendConfig();
void selectAllParameters(); void selectAllParameters();
bool showTopNCorrelations() const;
int topNFilterCount() const;
signals: signals:
void matrixCellSelected( const EnsembleParameter&, const RiaSummaryCurveDefinition& ); void matrixCellSelected( const EnsembleParameter&, const RiaSummaryCurveDefinition& );
@ -90,7 +92,7 @@ private:
caf::PdmField<bool> m_sortByAbsoluteValues; caf::PdmField<bool> m_sortByAbsoluteValues;
caf::PdmField<bool> m_excludeParametersWithoutVariation; caf::PdmField<bool> m_excludeParametersWithoutVariation;
caf::PdmField<bool> m_showOnlyTopNCorrelations; caf::PdmField<bool> m_showOnlyTopNCorrelations;
caf::PdmField<size_t> m_topNFilterCount; caf::PdmField<int> m_topNFilterCount;
caf::PdmField<std::vector<QString>> m_selectedParametersList; caf::PdmField<std::vector<QString>> m_selectedParametersList;
caf::PdmChildField<RimRegularLegendConfig*> m_legendConfig; 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", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_selectedParametersList, "SelectedParameters", "Select Parameters", "", "", "" );
m_selectedParametersList.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP ); m_selectedParametersList.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
@ -109,7 +111,8 @@ void RimCorrelationPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedFie
RimAbstractCorrelationPlot::fieldChangedByUi( changedField, oldValue, newValue ); RimAbstractCorrelationPlot::fieldChangedByUi( changedField, oldValue, newValue );
if ( changedField == &m_correlationFactor || changedField == &m_showAbsoluteValues || if ( changedField == &m_correlationFactor || changedField == &m_showAbsoluteValues ||
changedField == &m_sortByAbsoluteValues || changedField == &m_excludeParametersWithoutVariation || changedField == &m_sortByAbsoluteValues || changedField == &m_excludeParametersWithoutVariation ||
changedField == &m_selectedParametersList ) changedField == &m_selectedParametersList || changedField == &m_showOnlyTopNCorrelations ||
changedField == &m_topNFilterCount )
{ {
if ( changedField == &m_excludeParametersWithoutVariation ) if ( changedField == &m_excludeParametersWithoutVariation )
{ {
@ -136,6 +139,12 @@ void RimCorrelationPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder
correlationGroup->add( &m_sortByAbsoluteValues ); correlationGroup->add( &m_sortByAbsoluteValues );
} }
correlationGroup->add( &m_showOnlyTopNCorrelations );
if ( m_showOnlyTopNCorrelations() )
{
correlationGroup->add( &m_topNFilterCount );
}
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup( "Summary Vector" ); caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup( "Summary Vector" );
curveDataGroup->add( &m_selectedVarsUiField ); curveDataGroup->add( &m_selectedVarsUiField );
@ -202,7 +211,9 @@ void RimCorrelationPlot::onLoadDataAndUpdate()
// buildTestPlot( chartBuilder ); // buildTestPlot( chartBuilder );
addDataToChartBuilder( chartBuilder ); addDataToChartBuilder( chartBuilder );
chartBuilder.addBarChartToPlot( m_plotWidget, Qt::Horizontal ); chartBuilder.addBarChartToPlot( m_plotWidget,
Qt::Horizontal,
m_showOnlyTopNCorrelations() ? m_topNFilterCount() : -1 );
chartBuilder.setLabelFontSize( labelFontSize() ); chartBuilder.setLabelFontSize( labelFontSize() );
m_plotWidget->insertLegend( nullptr ); 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 setSortByAbsoluteValues( bool sortByAbsoluteValues );
void selectAllParameters(); void selectAllParameters();
void setShowOnlyTopNCorrelations( bool showOnlyTopNCorrelations );
void setTopNFilterCount( int filterCount );
signals: signals:
void tornadoItemSelected( const EnsembleParameter&, const RiaSummaryCurveDefinition& curveDef ); void tornadoItemSelected( const EnsembleParameter&, const RiaSummaryCurveDefinition& curveDef );
@ -86,5 +89,7 @@ private:
caf::PdmField<bool> m_showAbsoluteValues; caf::PdmField<bool> m_showAbsoluteValues;
caf::PdmField<bool> m_sortByAbsoluteValues; caf::PdmField<bool> m_sortByAbsoluteValues;
caf::PdmField<bool> m_excludeParametersWithoutVariation; caf::PdmField<bool> m_excludeParametersWithoutVariation;
caf::PdmField<bool> m_showOnlyTopNCorrelations;
caf::PdmField<int> m_topNFilterCount;
caf::PdmField<std::vector<QString>> m_selectedParametersList; caf::PdmField<std::vector<QString>> m_selectedParametersList;
}; };

View File

@ -303,8 +303,13 @@ void RimCorrelationReportPlot::onLoadDataAndUpdate()
updateMdiWindowVisibility(); updateMdiWindowVisibility();
if ( m_showWindow ) 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->setTimeStep( timeStep );
m_correlationPlot->setShowOnlyTopNCorrelations( showOnlyTopNCorrelations );
m_correlationPlot->setTopNFilterCount( topNFilterCount );
m_parameterResultCrossPlot->setTimeStep( timeStep ); m_parameterResultCrossPlot->setTimeStep( timeStep );
m_correlationMatrixPlot->setLabelFontSize( m_labelFontSize() ); m_correlationMatrixPlot->setLabelFontSize( m_labelFontSize() );