def __init__(self, *args, **kwargs): super(XYGraphics, self).__init__(**kwargs) if len(args) > 0 and isinstance(args[0], pd.Series): defX = args[0].index.tolist() defY = args[0].tolist() else: defY = getValue(kwargs, 'y') if defY is not None: if isinstance(defY, pd.Series) or isinstance(defY, np.ndarray): defY = defY.tolist() defX = list(range(0, len(defY))) else: defX = [] local_x = getValue(kwargs, 'x', defX) if local_x is not None: if isinstance(local_x, pd.Series): local_x = local_x.tolist() self.x = [None] * len(local_x) for idx in range(len(local_x)): x = local_x[idx] if isinstance(x, float) and math.isnan(x): self.x[idx] = "NaN" elif isinstance(x, dt.date) or isinstance(x, dt.time): self.x[idx] = date_time_2_millis(x.isoformat()) elif is_date(x): self.x[idx] = date_time_2_millis(x) elif isinstance(x, np.datetime64): self.x[idx] = date_time_2_millis(x.__str__()) else: self.x[idx] = x self.y = defY if self.y is not None: for idx in range(len(self.y)): y = self.y[idx] if isinstance(y, float) and math.isnan(y): self.y[idx] = "NaN" self.display_name = getValue(kwargs, 'displayName') self.lod_filter = getValue(kwargs, 'lodFilter') self.tooltips = getValue(kwargs, 'tooltips')
def __init__(self, *args, **kwargs): super(SimpleTimePlot, self).__init__(**kwargs) self.chart.type = 'TimePlot' self.use_tool_tip = True self.show_legend = True time_column_default = 'time' displayNames = getValue(kwargs, 'displayNames') displayLines = getValue(kwargs, 'displayLines', True) displayPoints = getValue(kwargs, 'displayPoints', False) colors = getValue(kwargs, 'colors') if len(args) > 0: tableData = args[0] else: tableData = [] if len(args) == 2: columnNames = args[1] else: columnNames = [] xs = [] yss = [] dataColumnsNames = [] parse_x = True if isinstance(tableData, DataFrame): if tableData.index.name is not None: time_column_default = tableData.index.name if not isinstance(tableData.index, RangeIndex): parse_x = False xs = tableData.index.to_numpy() tableData = tableData.to_dict(orient='rows') timeColumn = getValue(kwargs, 'timeColumn', time_column_default) self.chart.domain_axis_label = getValue(kwargs, 'xLabel', timeColumn) if tableData is not None and columnNames is not None: dataColumnsNames.extend(list(tableData[0])) for row in tableData: if parse_x: x = row[timeColumn] x = date_time_2_millis(x) xs.append(x) for idx in range(len(columnNames)): column = columnNames[idx] if (idx >= len(yss)): yss.append([]) yss[idx].append(row[column]) colors = self.getChartColors(columnNames, colors) for i in range(len(yss)): ys = yss[i] if displayLines is True: line = Line(x=xs, y=ys) if displayNames is not None and i < len(displayNames): line.display_name = displayNames[i] else: line.display_name = columnNames[i] if i < len(colors): line.color = colors[i] self.add(line) if displayPoints is True: points = Points(x=xs, y=ys) if displayNames is not None and i < len(displayNames): points.display_name = displayNames[i] else: points.display_name = columnNames[i] if i < len(colors): points.color = colors[i] self.add(points)