class RailsDataExplorer::Chart::ParallelSet
Responsibilities:
* Render a parallel set chart for multivariate analysis of categorical data series.
Collaborators:
* DataSet
Public Class Methods
new(_data_set, options = {})
click to toggle source
# File lib/rails_data_explorer/chart/parallel_set.rb, line 15 def initialize(_data_set, options = {}) @data_set = _data_set @options = {}.merge(options) end
Public Instance Methods
compute_chart_attrs()
click to toggle source
# File lib/rails_data_explorer/chart/parallel_set.rb, line 20 def compute_chart_attrs dimension_data_series = @data_set.data_series.find_all { |ds| (ds.chart_roles[Chart::ParallelSet] & [:dimension, :any]).any? } return false if dimension_data_series.empty? number_of_values = dimension_data_series.first.values.length dimension_names = dimension_data_series.map(&:name) dimension_values = number_of_values.times.map do |idx| dimension_data_series.inject({}) { |m,ds| m[ds.name] = if ds.data_type.is_a?(RailsDataExplorer::DataType::Quantitative::Temporal) ds.values[idx].to_i * 1000 else ds.values[idx] end m } end { dimensions: dimension_names, values: dimension_values } end
render()
click to toggle source
# File lib/rails_data_explorer/chart/parallel_set.rb, line 44 def render return '' unless render? ca = compute_chart_attrs return '' unless ca %( <div class="rde-chart rde-parallel-set"> <h3 class="rde-chart-title">Parallel Set</h3> <div id="#{ dom_id }" class="rde-chart-parallel-set" style="height: 600px; width: 100%"></div> <script type="text/javascript"> (function() { var parset = d3.parsets() .dimensions(#{ ca[:dimensions ].to_json }) ; var vis = d3.select("##{ dom_id }") .append("svg") .attr("width", parset.width()) .attr("height", parset.height()) ; vis.datum(#{ ca[:values].to_json }) .call(parset) ; })(); </script> </div> ) end