mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6200 Add option to sort by Correlation Matrix by rows/columns or both
This commit is contained in:
parent
054d2864f6
commit
651277e587
@ -54,6 +54,19 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
namespace caf
|
||||||
|
{
|
||||||
|
template <>
|
||||||
|
void caf::AppEnum<RimCorrelationMatrixPlot::Sorting>::setUp()
|
||||||
|
{
|
||||||
|
addItem( RimCorrelationMatrixPlot::Sorting::NO_SORTING, "NO_SORTING", "No Sorting" );
|
||||||
|
addItem( RimCorrelationMatrixPlot::Sorting::ROWS, "SORT_ROWS", "Sort Rows" );
|
||||||
|
addItem( RimCorrelationMatrixPlot::Sorting::COLUMNS, "SORT_COLUMNS", "Sort Columns" );
|
||||||
|
addItem( RimCorrelationMatrixPlot::Sorting::BOTH, "SORT_BOTH", "Sort Both Rows/Columns" );
|
||||||
|
setDefault( RimCorrelationMatrixPlot::Sorting::BOTH );
|
||||||
|
}
|
||||||
|
} // namespace caf
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT( RimCorrelationMatrixPlot, "CorrelationMatrixPlot" );
|
CAF_PDM_SOURCE_INIT( RimCorrelationMatrixPlot, "CorrelationMatrixPlot" );
|
||||||
|
|
||||||
class CorrelationMatrixShapeItem : public QwtPlotShapeItem
|
class CorrelationMatrixShapeItem : public QwtPlotShapeItem
|
||||||
@ -139,7 +152,7 @@ RimCorrelationMatrixPlot::RimCorrelationMatrixPlot()
|
|||||||
CAF_PDM_InitFieldNoDefault( &m_correlationFactor, "CorrelationFactor", "Correlation Factor", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_correlationFactor, "CorrelationFactor", "Correlation Factor", "", "", "" );
|
||||||
m_correlationFactor.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() );
|
m_correlationFactor.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() );
|
||||||
CAF_PDM_InitField( &m_showAbsoluteValues, "CorrelationAbsValues", false, "Show Absolute Values", "", "", "" );
|
CAF_PDM_InitField( &m_showAbsoluteValues, "CorrelationAbsValues", false, "Show Absolute Values", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_sortByValues, "CorrelationSorting", true, "Sort Matrix by Values", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_sortByValues, "CorrelationSorting", "Sort Matrix by Values", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_sortByAbsoluteValues, "CorrelationAbsSorting", true, "Sort by Absolute Values", "", "", "" );
|
CAF_PDM_InitField( &m_sortByAbsoluteValues, "CorrelationAbsSorting", true, "Sort by Absolute Values", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_excludeParametersWithoutVariation,
|
CAF_PDM_InitField( &m_excludeParametersWithoutVariation,
|
||||||
"ExcludeParamsWithoutVariation",
|
"ExcludeParamsWithoutVariation",
|
||||||
@ -229,11 +242,11 @@ void RimCorrelationMatrixPlot::defineUiOrdering( QString uiConfigName, caf::PdmU
|
|||||||
correlationGroup->add( &m_excludeParametersWithoutVariation );
|
correlationGroup->add( &m_excludeParametersWithoutVariation );
|
||||||
correlationGroup->add( &m_showAbsoluteValues );
|
correlationGroup->add( &m_showAbsoluteValues );
|
||||||
correlationGroup->add( &m_sortByValues );
|
correlationGroup->add( &m_sortByValues );
|
||||||
if ( !m_showAbsoluteValues() && m_sortByValues() )
|
if ( !m_showAbsoluteValues() && m_sortByValues() != Sorting::NO_SORTING )
|
||||||
{
|
{
|
||||||
correlationGroup->add( &m_sortByAbsoluteValues );
|
correlationGroup->add( &m_sortByAbsoluteValues );
|
||||||
}
|
}
|
||||||
if ( m_sortByValues() )
|
if ( m_sortByValues() != Sorting::NO_SORTING )
|
||||||
{
|
{
|
||||||
correlationGroup->add( &m_showOnlyTopNCorrelations );
|
correlationGroup->add( &m_showOnlyTopNCorrelations );
|
||||||
if ( m_showOnlyTopNCorrelations() )
|
if ( m_showOnlyTopNCorrelations() )
|
||||||
@ -507,22 +520,28 @@ void RimCorrelationMatrixPlot::createMatrix()
|
|||||||
}
|
}
|
||||||
|
|
||||||
eraseInvalidEntries( correlationMatrixColumns );
|
eraseInvalidEntries( correlationMatrixColumns );
|
||||||
if ( m_sortByValues() ) sortEntries( correlationMatrixColumns, m_sortByAbsoluteValues() || m_showAbsoluteValues() );
|
if ( m_sortByValues() == Sorting::COLUMNS || m_sortByValues() == Sorting::BOTH )
|
||||||
|
|
||||||
if ( m_sortByValues() && m_showOnlyTopNCorrelations && m_topNFilterCount < correlationMatrixColumns.size() )
|
|
||||||
{
|
{
|
||||||
correlationMatrixColumns.erase( correlationMatrixColumns.begin() + m_topNFilterCount(),
|
sortEntries( correlationMatrixColumns, m_sortByAbsoluteValues() || m_showAbsoluteValues() );
|
||||||
correlationMatrixColumns.end() );
|
|
||||||
|
if ( m_showOnlyTopNCorrelations && m_topNFilterCount < correlationMatrixColumns.size() )
|
||||||
|
{
|
||||||
|
correlationMatrixColumns.erase( correlationMatrixColumns.begin() + m_topNFilterCount(),
|
||||||
|
correlationMatrixColumns.end() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto correlationMatrixRows = transpose( correlationMatrixColumns );
|
auto correlationMatrixRows = transpose( correlationMatrixColumns );
|
||||||
|
|
||||||
eraseInvalidEntries( correlationMatrixRows );
|
eraseInvalidEntries( correlationMatrixRows );
|
||||||
if ( m_sortByValues() ) sortEntries( correlationMatrixRows, m_sortByAbsoluteValues() || m_showAbsoluteValues() );
|
if ( m_sortByValues() == Sorting::ROWS || m_sortByValues() == Sorting::BOTH )
|
||||||
|
|
||||||
if ( m_showOnlyTopNCorrelations && m_topNFilterCount < correlationMatrixRows.size() )
|
|
||||||
{
|
{
|
||||||
correlationMatrixRows.erase( correlationMatrixRows.begin() + m_topNFilterCount(), correlationMatrixRows.end() );
|
sortEntries( correlationMatrixRows, m_sortByAbsoluteValues() || m_showAbsoluteValues() );
|
||||||
|
|
||||||
|
if ( m_showOnlyTopNCorrelations && m_topNFilterCount < correlationMatrixRows.size() )
|
||||||
|
{
|
||||||
|
correlationMatrixRows.erase( correlationMatrixRows.begin() + m_topNFilterCount(), correlationMatrixRows.end() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( size_t rowIdx = 0u; rowIdx < correlationMatrixRows.size(); ++rowIdx )
|
for ( size_t rowIdx = 0u; rowIdx < correlationMatrixRows.size(); ++rowIdx )
|
||||||
|
@ -40,6 +40,15 @@ public:
|
|||||||
using CorrelationFactor = RimCorrelationPlot::CorrelationFactor;
|
using CorrelationFactor = RimCorrelationPlot::CorrelationFactor;
|
||||||
using CorrelationFactorEnum = RimCorrelationPlot::CorrelationFactorEnum;
|
using CorrelationFactorEnum = RimCorrelationPlot::CorrelationFactorEnum;
|
||||||
|
|
||||||
|
enum class Sorting
|
||||||
|
{
|
||||||
|
NO_SORTING,
|
||||||
|
ROWS,
|
||||||
|
COLUMNS,
|
||||||
|
BOTH,
|
||||||
|
};
|
||||||
|
using SortingEnum = caf::AppEnum<Sorting>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RimCorrelationMatrixPlot();
|
RimCorrelationMatrixPlot();
|
||||||
~RimCorrelationMatrixPlot() override;
|
~RimCorrelationMatrixPlot() override;
|
||||||
@ -76,7 +85,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
caf::PdmField<CorrelationFactorEnum> m_correlationFactor;
|
caf::PdmField<CorrelationFactorEnum> m_correlationFactor;
|
||||||
caf::PdmField<bool> m_showAbsoluteValues;
|
caf::PdmField<bool> m_showAbsoluteValues;
|
||||||
caf::PdmField<bool> m_sortByValues;
|
caf::PdmField<SortingEnum> m_sortByValues;
|
||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user