VinodLouis commented on a change in pull request #5144: Adding a new viz 
line-bar chart
URL: 
https://github.com/apache/incubator-superset/pull/5144#discussion_r371795669
 
 

 ##########
 File path: superset/viz.py
 ##########
 @@ -2623,6 +2623,80 @@ def get_data(self, df):
         return self.nest_values(levels)
 
 
+class LineBarViz(NVD3Viz):
+
+    """A simple line bar chart with dual axis"""
+
+    viz_type = 'line_bar'
+    verbose_name = _('Time Series - Line Bar Chart')
+    sort_series = False
+    is_timeseries = True
+
+    def query_obj(self):
+        d = super(LineBarViz, self).query_obj()
+        m1 = self.form_data.get('metric')
+        m2 = self.form_data.get('metric_2')
+        d['metrics'] = [m1, m2]
+        if not m1:
+            raise Exception(_('Pick a metric for left(bar) axis!'))
+        if not m2:
+            raise Exception(_('Pick a metric for right(line) axis!'))
+        if m1 == m2:
+            raise Exception(_('Please choose different metrics'
+                            ' on left and right axis'))
+        return d
+
+    def to_series(self, df, classed=''):
+        cols = []
+        for col in df.columns:
+            if col == '':
+                cols.append('N/A')
+            elif col is None:
+                cols.append('NULL')
+            else:
+                cols.append(col)
+        df.columns = cols
+        series = df.to_dict('series')
+        chart_data = []
+        metrics = [
+            self.form_data.get('metric'),
+            self.form_data.get('metric_2'),
+        ]
+        for i, m in enumerate(metrics):
+            ys = series[m]
 
 Review comment:
   ```
   class LineBarViz(DistributionPieViz):
       """A rich line chart with dual axis"""
       viz_type = 'line_bar'
       verbose_name = _('Time Series - Line Bar Chart')
       sort_series = False
       is_timeseries = True
       def query_obj(self):
           d = super(LineBarViz, self).query_obj()
           m1 = self.form_data.get('metric')
           m2 = self.form_data.get('metric_2i')
           d['metrics'] = [m1, m2]
           if not m1:
               raise Exception(_('Pick a metric for left(bar) axis!'))
           if not m2:
               raise Exception(_('Pick a metric for right(line) axis!'))
           if m1['label'] == m2['label']:
               raise Exception(_('Please choose different metrics'
                               ' on left and right axis'))
           return d
       def to_series(self, df, classed=''):
           cols = []
           for col in df.columns:
               if col == '':
                   cols.append('N/A')
               elif col is None:
                   cols.append('NULL')
               else:
                   cols.append(col)
           df.columns = cols
           series = df.to_dict('series')
           chart_data = []
           metrics = [
               self.form_data.get('metric')['label'],
               self.form_data.get('metric_2i')['label'],
           ]
           for i, m in enumerate(metrics):
               ys = series[m]
               if df[m].dtype.kind not in 'biufc':
                   continue
               series_title = m
               d = {
                   'key': series_title,
                   'classed': classed,
                   'values': [
                       {'x': ds, 'y': ys[ds] if ds in ys else None}
                       for ds in df.index
                   ],
                   'yAxis': i + 1,
                   'type': 'bar' if i==0 else 'line',
               }
               chart_data.append(d)
           return chart_data
       def get_data(self, df):
           fd = self.form_data
           df = df.fillna(0)
           if self.form_data.get('granularity') == 'all':
               raise Exception(_('Pick a time granularity for your time 
series'))
           metric = fd.get('metric')
           metric_2i = fd.get('metric_2i')
           print(metric)
           df = df.pivot_table(
               index=DTTM_ALIAS,
               values=[metric['label'], metric_2i['label']])
           chart_data = self.to_series(df)
           return chart_data
   ```
   
   This May help you

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to