Esempio n. 1
0
    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')
Esempio n. 2
0
    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)