Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/21/10 02:58:15 (14 years ago)
Author:
swagner
Message:

Worked on allele frequency analysis (#1234)

Location:
trunk/sources/HeuristicLab.Analysis.Views/3.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Analysis.Views/3.3/AlleleFrequencyArrayView.Designer.cs

    r4623 r4631  
    4747      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
    4848      System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
    49       System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
    50       this.chart = new System.Windows.Forms.DataVisualization.Charting.Chart();
     49      System.Windows.Forms.DataVisualization.Charting.Title title1 = new System.Windows.Forms.DataVisualization.Charting.Title();
     50      this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart();
    5151      ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
    5252      this.SuspendLayout();
     
    5959      this.chart.BorderlineColor = System.Drawing.Color.Black;
    6060      this.chart.BorderlineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid;
     61      chartArea1.AxisX.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.VariableCount;
     62      chartArea1.AxisX.LabelAutoFitStyle = ((System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles)((System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles.IncreaseFont | System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles.DecreaseFont)));
     63      chartArea1.AxisX.LabelStyle.Angle = 90;
     64      chartArea1.AxisX.Title = "Alleles";
     65      chartArea1.AxisY.Maximum = 1D;
     66      chartArea1.AxisY.Minimum = 0D;
     67      chartArea1.AxisY.Title = "Relative Frequency";
     68      chartArea1.AxisY2.Title = "Average Solution Quality";
    6169      chartArea1.CursorX.IsUserEnabled = true;
    6270      chartArea1.CursorX.IsUserSelectionEnabled = true;
    6371      chartArea1.CursorY.IsUserEnabled = true;
    6472      chartArea1.CursorY.IsUserSelectionEnabled = true;
    65       chartArea1.Name = "ChartArea1";
     73      chartArea1.Name = "Default";
    6674      this.chart.ChartAreas.Add(chartArea1);
    6775      legend1.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Top;
    68       legend1.Name = "Legend1";
     76      legend1.Name = "Default";
    6977      this.chart.Legends.Add(legend1);
    7078      this.chart.Location = new System.Drawing.Point(0, 0);
    7179      this.chart.Name = "chart";
    72       series1.ChartArea = "ChartArea1";
    73       series1.Legend = "Legend1";
    74       series1.Name = "Series1";
    75       this.chart.Series.Add(series1);
    7680      this.chart.Size = new System.Drawing.Size(498, 359);
    77       this.chart.TabIndex = 4;
    78       this.chart.Text = "chart1";
     81      this.chart.TabIndex = 0;
     82      this.chart.Text = "chart";
     83      title1.Name = "Default";
     84      title1.Text = "Allele Frequencies";
     85      this.chart.Titles.Add(title1);
     86      this.chart.CustomizeLegend += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.CustomizeLegendEventArgs>(this.chart_CustomizeLegend);
     87      this.chart.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chart_MouseDown);
     88      this.chart.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chart_MouseMove);
    7989      //
    8090      // AlleleFrequencyArrayView
     
    92102    #endregion
    93103
    94     private System.Windows.Forms.DataVisualization.Charting.Chart chart;
     104    protected HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart chart;
    95105
    96106  }
  • trunk/sources/HeuristicLab.Analysis.Views/3.3/AlleleFrequencyArrayView.cs

    r4623 r4631  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using System.Drawing;
     24using System.Linq;
    2225using System.Windows.Forms;
    2326using System.Windows.Forms.DataVisualization.Charting;
     
    2932  [Content(typeof(AlleleFrequencyArray), true)]
    3033  public partial class AlleleFrequencyArrayView : ItemView {
     34    private List<Series> invisibleSeries;
     35
    3136    public new AlleleFrequencyArray Content {
    3237      get { return (AlleleFrequencyArray)base.Content; }
     
    3641    public AlleleFrequencyArrayView() {
    3742      InitializeComponent();
    38     }
    39 
    40     protected override void DeregisterContentEvents() {
    41       // ...
    42       base.DeregisterContentEvents();
    43     }
    44 
    45     protected override void RegisterContentEvents() {
    46       base.RegisterContentEvents();
    47       // ...
     43      invisibleSeries = new List<Series>();
    4844    }
    4945
    5046    protected override void OnContentChanged() {
    5147      base.OnContentChanged();
    52       chart.Titles.Clear();
    53       chart.Series.Clear();
    54       chart.DataSource = null;
    55       if (Content != null)
    56         PopulateChart();
     48      if (Content == null) {
     49        chart.Series.Clear();
     50        chart.DataSource = null;
     51        invisibleSeries.Clear();
     52      } else {
     53        if (chart.Series.Count == 0) CreateSeries();
     54        chart.DataSource = Content.Select(x => new {
     55          Id = x.Id,
     56          BestKnownFrequency = x.ContainedInBestKnownSolution ? x.Frequency : 0,
     57          Frequency = !x.ContainedInBestKnownSolution ? x.Frequency : 0,
     58          Quality = x.AverageSolutionQuality,
     59          Impact = x.AverageImpact
     60        }).OrderBy(x => x.Impact).ToArray();
     61        UpdateSeries();
     62      }
    5763    }
    5864
     
    6268    }
    6369
    64     private void PopulateChart() {
    65       chart.Titles.Add(new Title("Allele Frequencies", Docking.Top));
    66       chart.DataSource = Content;
    67       Series frequencies = new Series("Frequencies");
    68       frequencies.ChartType = SeriesChartType.Column;
    69       frequencies.XValueMember = "Id";
    70       frequencies.XValueType = ChartValueType.String;
    71       frequencies.YValueMembers = "Frequency";
    72       frequencies.YValueType = ChartValueType.Double;
    73       frequencies.YAxisType = AxisType.Primary;
    74       frequencies.ToolTip = "X = #INDEX, Y = #VAL";
    75       chart.Series.Add(frequencies);
     70    protected virtual void CreateSeries() {
     71      Series bestKnown = new Series("Alleles of Best Known Solution");
     72      bestKnown.ChartType = SeriesChartType.StackedColumn;
     73      bestKnown.XValueMember = "Id";
     74      bestKnown.XValueType = ChartValueType.String;
     75      bestKnown.YValueMembers = "BestKnownFrequency";
     76      bestKnown.YValueType = ChartValueType.Double;
     77      bestKnown.YAxisType = AxisType.Primary;
     78      bestKnown.ToolTip = "X = #LABEL, Y = #VAL";
     79      chart.Series.Add(bestKnown);
     80
     81      Series others = new Series("Other Alleles");
     82      others.ChartType = SeriesChartType.StackedColumn;
     83      others.XValueMember = "Id";
     84      others.XValueType = ChartValueType.String;
     85      others.YValueMembers = "Frequency";
     86      others.YValueType = ChartValueType.Double;
     87      others.YAxisType = AxisType.Primary;
     88      others.ToolTip = "X = #LABEL, Y = #VAL";
     89      chart.Series.Add(others);
     90
    7691      Series qualities = new Series("Average Solution Qualities");
    7792      qualities.ChartType = SeriesChartType.FastLine;
    7893      qualities.XValueMember = "Id";
    7994      qualities.XValueType = ChartValueType.String;
    80       qualities.YValueMembers = "AverageSolutionQuality";
     95      qualities.YValueMembers = "Quality";
    8196      qualities.YValueType = ChartValueType.Double;
    8297      qualities.YAxisType = AxisType.Secondary;
    83       qualities.ToolTip = "X = #INDEX, Y = #VAL";
     98      qualities.ToolTip = "X = #LABEL, Y = #VAL";
    8499      chart.Series.Add(qualities);
     100
     101      Series impacts = new Series("Average Impact");
     102      impacts.ChartType = SeriesChartType.FastLine;
     103      impacts.XValueMember = "Id";
     104      impacts.XValueType = ChartValueType.String;
     105      impacts.YValueMembers = "Impact";
     106      impacts.YValueType = ChartValueType.Double;
     107      impacts.YAxisType = AxisType.Secondary;
     108      impacts.ToolTip = "X = #LABEL, Y = #VAL";
     109      chart.Series.Add(impacts);
    85110    }
     111
     112    protected virtual void UpdateSeries() {
     113      chart.DataBind();
     114
     115      if (invisibleSeries.Contains(chart.Series["Alleles of Best Known Solution"]))
     116        chart.Series["Alleles of Best Known Solution"].Points.Clear();
     117      chart.DataManipulator.Filter(CompareMethod.EqualTo, 0, chart.Series["Alleles of Best Known Solution"]);
     118
     119      if (invisibleSeries.Contains(chart.Series["Other Alleles"]))
     120        chart.Series["Other Alleles"].Points.Clear();
     121      chart.DataManipulator.Filter(CompareMethod.EqualTo, 0, chart.Series["Other Alleles"]);
     122
     123      if (invisibleSeries.Contains(chart.Series["Average Solution Qualities"]))
     124        chart.Series["Average Solution Qualities"].Points.Clear();
     125      chart.DataManipulator.Filter(CompareMethod.EqualTo, 0, chart.Series["Average Solution Qualities"]);
     126
     127      if (invisibleSeries.Contains(chart.Series["Average Impact"]))
     128        chart.Series["Average Impact"].Points.Clear();
     129      chart.DataManipulator.Filter(CompareMethod.EqualTo, 0, chart.Series["Average Impact"]);
     130    }
     131
     132    #region Chart Events
     133    protected virtual void chart_MouseDown(object sender, MouseEventArgs e) {
     134      HitTestResult result = chart.HitTest(e.X, e.Y);
     135      if (result.ChartElementType == ChartElementType.LegendItem) {
     136        ToggleSeriesVisible(result.Series);
     137      }
     138    }
     139
     140    protected virtual void ToggleSeriesVisible(Series series) {
     141      if (!invisibleSeries.Contains(series))
     142        invisibleSeries.Add(series);
     143      else
     144        invisibleSeries.Remove(series);
     145      UpdateSeries();
     146    }
     147
     148    protected virtual void chart_MouseMove(object sender, MouseEventArgs e) {
     149      HitTestResult result = chart.HitTest(e.X, e.Y);
     150      if (result.ChartElementType == ChartElementType.LegendItem)
     151        this.Cursor = Cursors.Hand;
     152      else
     153        this.Cursor = Cursors.Default;
     154    }
     155
     156    protected virtual void chart_CustomizeLegend(object sender, CustomizeLegendEventArgs e) {
     157      foreach (LegendItem legendItem in e.LegendItems) {
     158        var series = chart.Series[legendItem.SeriesName];
     159        if (series != null) {
     160          bool seriesIsInvisible = invisibleSeries.Contains(series);
     161          foreach (LegendCell cell in legendItem.Cells) {
     162            cell.ForeColor = seriesIsInvisible ? Color.Gray : Color.Black;
     163          }
     164        }
     165      }
     166    }
     167    #endregion
    86168  }
    87169}
  • trunk/sources/HeuristicLab.Analysis.Views/3.3/HeuristicLab.Analysis.Views-3.3.csproj

    r4623 r4631  
    9494  </PropertyGroup>
    9595  <ItemGroup>
     96    <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.2.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     97    <Reference Include="HeuristicLab.Data.Views-3.3">
     98      <HintPath>..\..\HeuristicLab.Data.Views\3.3\bin\Debug\HeuristicLab.Data.Views-3.3.dll</HintPath>
     99    </Reference>
     100    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    96101    <Reference Include="System" />
    97102    <Reference Include="System.Core">
     
    170175      <Name>HeuristicLab.MainForm-3.3</Name>
    171176    </ProjectReference>
     177    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
     178      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
     179      <Name>HeuristicLab.Optimization.Views-3.3</Name>
     180    </ProjectReference>
    172181    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
    173182      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
    174183      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
     184    </ProjectReference>
     185    <ProjectReference Include="..\..\HeuristicLab.Visualization.ChartControlsExtensions\3.3\HeuristicLab.Visualization.ChartControlsExtensions-3.3.csproj">
     186      <Project>{315BDA09-3F4F-49B3-9790-B37CFC1C5750}</Project>
     187      <Name>HeuristicLab.Visualization.ChartControlsExtensions-3.3</Name>
    175188    </ProjectReference>
    176189  </ItemGroup>
  • trunk/sources/HeuristicLab.Analysis.Views/3.3/HeuristicLabAnalysisViewsPlugin.cs.frame

    r4623 r4631  
    3636  [PluginDependency("HeuristicLab.MainForm", "3.3")]
    3737  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
     38  [PluginDependency("HeuristicLab.Visualization.ChartControlsExtensions", "3.3")]
    3839  public class HeuristicLabAnalysisViewsPlugin : PluginBase {
    3940  }
Note: See TracChangeset for help on using the changeset viewer.