def constructImage(self): plot = Plot() # Uneven error bars line = Line() line.xValues = [6, 10, 4, 0, 8, 2, 12] line.yValues = [50, 90, 30, 10, 70, 20, 110] line.yMins = [y - 30 for y in line.yValues] line.yMaxes = [y + 50 for y in line.yValues] line.label = "Asymmetric Errors" line.color = "red" # Even error bars line2 = Line() line2.xValues = [1, 5, 3, 9, 7, 11] line2.yValues = [100, 120, 110, 140, 130, 150] line2.color = "blue" line2.label = "Symmetric Errors" line2.yErrors = [5, 25, 15, 45, 35, 55] plot.add(line) plot.add(line2) plot.xLabel = "X Label" plot.yLabel = "Y Label" plot.hasLegend() plot.xLimits = (-1, 13) plot.save(self.imageName)
def constructImage(self): plot = Plot() # Uneven error bars line = Line() line.xValues = [6,10,4,0,8,2,12] line.yValues = [50,90,30,10,70,20,110] line.yMins = [y - 30 for y in line.yValues] line.yMaxes = [y + 50 for y in line.yValues] line.label = "Asymmetric Errors" line.color = "red" # Even error bars line2 = Line() line2.xValues = [1,5,3,9,7,11] line2.yValues = [100, 120, 110, 140, 130, 150] line2.color = "blue" line2.label = "Symmetric Errors" line2.yErrors = [5,25,15,45,35,55] plot.add(line) plot.add(line2) plot.xLabel = "X Label" plot.yLabel = "Y Label" plot.hasLegend() plot.xLimits = (-1, 13) plot.save(self.imageName)
def constructImage(self): line = Line() line.xValues = range(5) line.yValues = [2, 3, 5, 7, 9] line.label = "A Line" linePlot1 = Plot() linePlot1.title = "Small Legend" linePlot1.add(line) linePlot1.hasLegend() linePlot1.legendLabelSize = 10 linePlot2 = Plot() linePlot2.title = "Large Legend" linePlot2.add(line) linePlot2.hasLegend() linePlot2.legendLabelSize = 30 linePlot3 = Plot() linePlot3.title = "Inherited from Layout" linePlot3.add(line) linePlot3.hasLegend() layout = PlotLayout() layout.width = 2 layout.addPlot(linePlot1) layout.addPlot(linePlot2) layout.addPlot(linePlot3) layout.legendLabelSize = 15 layout.save(self.imageName)
def constructImage(self): line = Line() line.xValues = range(5) line.yValues = [2,3,5,7,9] line.label = "A Line" linePlot1 = Plot() linePlot1.title = "Small Legend" linePlot1.add(line) linePlot1.hasLegend() linePlot1.legendLabelSize = 10 linePlot2 = Plot() linePlot2.title = "Large Legend" linePlot2.add(line) linePlot2.hasLegend() linePlot2.legendLabelSize = 30 linePlot3 = Plot() linePlot3.title = "Inherited from Layout" linePlot3.add(line) linePlot3.hasLegend() layout = PlotLayout() layout.width = 2 layout.addPlot(linePlot1) layout.addPlot(linePlot2) layout.addPlot(linePlot3) layout.legendLabelSize = 15 layout.save(self.imageName)
def histogram_plot(experiment_log_dir, plot_spec_string, output_filename, has_legend, x_limit, verbose): queries = [ plot_utils.plot_spec_string_to_query(plot_spec_string, 0, "HIST")] plot_data = metaprogram_utils.process_queries( queries, experiment_log_dir, verbose) if "plot_points" not in plot_data: warnings.warn("No data to plot!") return histogram_data = plot_data["plot_points"][0] cumulative_histogram = {} layout = PlotLayout() layout.dpi = 250 for stat_name in histogram_data: plot = Plot() plot.setTitle(stat_name) if has_legend: plot.hasLegend(labelSize=8) if x_limit is not None: plot.setXLimits(0, x_limit) style_plot(plot, stat_name) for key, points in sorted(histogram_data[stat_name].items()): for size, count in itertools.izip(points["bin"], points["count"]): if size not in cumulative_histogram: cumulative_histogram[size] = 0 cumulative_histogram[size] += count line = Line() line.stepFunction("pre") line.label = str(key) line.xValues = points["bin"] line.yValues = points["count"] plot.add(line) layout.addPlot(plot) cumulative_plot = Plot() if x_limit is not None: cumulative_plot.setXLimits(0, x_limit) cumulative_plot.setTitle("Cumulative Histogram for " + stat_name) style_plot(cumulative_plot, stat_name) line = Line() line.stepFunction("pre") line.xValues = sorted(cumulative_histogram.keys()) line.yValues = [cumulative_histogram[key] for key in line.xValues] cumulative_plot.add(line) layout.addPlot(cumulative_plot) layout.save(output_filename)
def constructImage(self): lines = [] for i in xrange(3): line = Line() line.xValues = xrange(5) line.yValues = [(i+1 / 2.0) * pow(x, i+1) for x in line.xValues] line.label = "Line %d" % (i + 1) lines.append(line) plot = Plot() plot.add(lines[0]) inset = Plot() inset.add(lines[1]) inset.hideTickLabels() inset.setTitle("Inset in Yo Inset\nSo You Can Inset\nWhile You Inset") insideInset = Plot() insideInset.hideTickLabels() insideInset.add(lines[2]) inset.addInset(insideInset, width=0.4, height=0.3, location="upper left") plot.addInset(inset, width=0.4, height=0.4, location="lower right") plot.save(self.imageName)
def constructImage(self): lines = [] for i in xrange(3): line = Line() line.xValues = xrange(5) line.yValues = [(i+1 / 2.0) * pow(x, i+1) for x in line.xValues] line.label = "Line %d" % (i + 1) lines.append(line) plot = Plot() plot.add(lines[0]) inset = Plot() inset.add(lines[1]) inset.hideTickLabels() inset.title = ("Inset in Yo Inset\nSo You Can Inset\nWhile You Inset") insideInset = Plot() insideInset.hideTickLabels() insideInset.add(lines[2]) inset.addInset(insideInset, width=0.4, height=0.3, location="upper left") plot.addInset(inset, width=0.4, height=0.4, location="lower right") plot.save(self.imageName)
def constructImage(self): line = Line() line.xValues = range(5) line.yValues = [2,3,5,7,9] line.label = "A Line" linePlot1 = Plot() linePlot1.setTitle("Small Legend") linePlot1.add(line) linePlot1.hasLegend() linePlot1.setLegendLabelSize(10) linePlot2 = Plot() linePlot2.setTitle("Large Legend") linePlot2.add(line) linePlot2.hasLegend() linePlot2.setLegendLabelSize(30) linePlot3 = Plot() linePlot3.setTitle("Inherited from Layout") linePlot3.add(line) linePlot3.hasLegend() layout = PlotLayout() layout.setWidth(2) layout.addPlot(linePlot1) layout.addPlot(linePlot2) layout.addPlot(linePlot3) layout.setLegendLabelSize(15) layout.setPlotParameters(left=0.03, bottom=0.03, right=0.98, top=0.94) layout.save(self.imageName)
def main(): output_graph = sys.argv[1] plot = Plot() plot.hasLegend(location='lower right') plot.xLabel = 'Per-client throughput (Mbps)' # Change this plot.yLabel = 'CDF' plot.xLimits = (0, 50) plot.yLimits = (0, 1) plot.legendLabelSize = FONT_SIZE plot.xTickLabelSize = FONT_SIZE - 2 plot.yTickLabelSize = FONT_SIZE - 2 plot.axesLabelSize = FONT_SIZE for csv_file in sys.argv[2:]: cdf_table = _make_cdf(csv_file) line = Line() line.xValues = [x for (x, _) in cdf_table] line.yValues = [y for (_, y) in cdf_table] line.color = colors.pop(0) line.lineStyle = line_styles.pop(0) # Extract the filename line.label = capitalize( csv_file.split('/')[-2].replace('.csv', '') ) plot.add(line) plot.save(output_graph)
def __init__(self, label, color): line = Line() line.marker = "." line.label = label line.color = color self.line = line scatter = Scatter() scatter.marker = "x" scatter.color = color scatter.markerSize = 200 self.scatter = scatter
def make_line_objects_for_stat_name( query_number, stat_name, stat_name_data, min_timestamps): lines = [] for points_info in sorted(stat_name_data): lines_dict = {} lines_dict["query_number"] = query_number lines_dict["stat_name"] = stat_name hostname = points_info[0].split('.')[0][-3:] if len(points_info) == 4: (phase, stage, worker_id) = points_info[1:] lines_dict["stage"] = stage lines_dict["worker_id"] = worker_id label = "h:%s s:%s i:%d n:%s" % ( hostname, stage, worker_id, stat_name) elif len(points_info) == 3: (phase, logger_name) = points_info[1:] lines_dict["logger_name"] = logger_name label = "h:%s l:%s n:%s" % ( hostname, logger_name, stat_name) lines_dict["hostname"] = hostname lines_dict["phase"] = phase min_timestamp = min_timestamps[phase] def timestamp_adjuster(x): """ Adjust an absolute timestamp in microseconds to time in seconds relative to the min timestamp """ return float(x - min_timestamp) / 1000000.0 time_series_line = Line() time_series_line.label = label time_series_line.stepFunction("pre") time_series_line.xValues = map( timestamp_adjuster, stat_name_data[points_info]["x_values"]) time_series_line.yValues = stat_name_data[points_info]["y_values"] lines_dict["time_series_line"] = time_series_line lines_dict["cdf_line"] = Utils.getCDF( stat_name_data[points_info]["y_values"]) lines_dict["cdf_line"].label = label lines.append(lines_dict) return lines
def make_line_objects_for_stat_name(query_number, stat_name, stat_name_data, min_timestamps): lines = [] for points_info in sorted(stat_name_data): lines_dict = {} lines_dict["query_number"] = query_number lines_dict["stat_name"] = stat_name hostname = points_info[0].split('.')[0][-3:] if len(points_info) == 4: (phase, stage, worker_id) = points_info[1:] lines_dict["stage"] = stage lines_dict["worker_id"] = worker_id label = "h:%s s:%s i:%d n:%s" % (hostname, stage, worker_id, stat_name) elif len(points_info) == 3: (phase, logger_name) = points_info[1:] lines_dict["logger_name"] = logger_name label = "h:%s l:%s n:%s" % (hostname, logger_name, stat_name) lines_dict["hostname"] = hostname lines_dict["phase"] = phase min_timestamp = min_timestamps[phase] def timestamp_adjuster(x): """ Adjust an absolute timestamp in microseconds to time in seconds relative to the min timestamp """ return float(x - min_timestamp) / 1000000.0 time_series_line = Line() time_series_line.label = label time_series_line.stepFunction("pre") time_series_line.xValues = map(timestamp_adjuster, stat_name_data[points_info]["x_values"]) time_series_line.yValues = stat_name_data[points_info]["y_values"] lines_dict["time_series_line"] = time_series_line lines_dict["cdf_line"] = Utils.getCDF( stat_name_data[points_info]["y_values"]) lines_dict["cdf_line"].label = label lines.append(lines_dict) return lines
def constructImage(self): line1 = Line() line1.xValues = range(7) line1.yValues = [1, 2, 4, 8, 16, 32, 64] line1.label = "First Plot" line1.lineStyle = "-" line1.color = "red" line2 = Line() line2.xValues = range(7) line2.yValues = [100, 90, 80, 70, 60, 50, 40] line2.label = "Second Plot" line2.lineStyle = "--" line2.color = "blue" plot = Plot() plot.add(line1) plot.add(line2) plot.xLabel = "Shared X Axis" plot.yLabel = "First Plot's Y Axis" plot.setTwinX("Second Plot's Y Axis", 1) plot.hasLegend() plot.save(self.imageName)
def constructImage(self): plot = Plot() for i in xrange(6): line = Line() line.xValues = xrange(5) line.yValues = [(i + 1) * x for x in line.xValues] line.label = "Line %d" % (i + 1) plot.add(line) plot.addLineColor("red") plot.addLineColor("blue") plot.addLineColor("green") plot.addMarker("") plot.addMarker("x") plot.hasLegend(columns=2) plot.save(self.imageName)
def constructImage(self): plot = Plot() for i in xrange(24): line = Line() line.xValues = xrange(5) line.yValues = [(i+1) * x for x in line.xValues] line.label = "Line %d" % (i + 1) plot.add(line) plot.addLineColor("red") plot.addLineColor("blue") plot.addLineStyle("-") plot.addLineStyle("dashed") plot.addLineStyle("dotted") plot.addMarker('none') plot.addMarker('x') plot.addMarker('o') plot.hasLegend(columns=2) plot.setLegendLabelSize(8) plot.save(self.imageName)
def constructImage(self): plot = Plot() for i in xrange(24): line = Line() line.xValues = xrange(5) line.yValues = [(i + 1) * x for x in line.xValues] line.label = "Line %d" % (i + 1) plot.add(line) plot.addLineColor("red") plot.addLineColor("blue") plot.addLineStyle("-") plot.addLineStyle("dashed") plot.addLineStyle("dotted") plot.addMarker('none') plot.addMarker('x') plot.addMarker('o') plot.hasLegend(columns=2) plot.setLegendLabelSize(8) plot.save(self.imageName)
#!/usr/bin/env python from boomslang import Line, Plot plot = Plot() for i in xrange(6): line = Line() line.xValues = xrange(5) line.yValues = [(i+1) * x for x in line.xValues] line.label = "Line %d" % (i + 1) plot.add(line) plot.addLineColor("red") plot.addLineColor("blue") plot.addLineStyle("-") plot.addLineStyle("--") plot.addLineStyle(":") plot.hasLegend(columns=2) plot.save("linestyles.png")
#!/usr/bin/env python from boomslang import Line, Plot line1 = Line() line1.xValues = range(7) line1.yValues = [1, 2, 4, 8, 16, 32, 64] line1.label = "First Plot" line1.lineStyle = "-" line1.color = "red" line2 = Line() line2.xValues = range(7) line2.yValues = [100, 90, 80, 70, 60, 50, 40] line2.label = "Second Plot" line2.lineStyle = "--" line2.color = "blue" plot = Plot() plot.add(line1) plot.add(line2) plot.setXLabel("Shared X Axis") plot.setYLabel("First Plot's Y Axis") plot.setTwinX("Second Plot's Y Axis", 1) plot.hasLegend() plot.save("twinx.png")
#!/usr/bin/env python from boomslang import Line, Plot plot = Plot() # Uneven error bars line = Line() line.xValues = range(6) line.yValues = [25, 21, 30, 23, 10, 30] line.yMins = [10, 18, 10, 10, 5, 20] line.yMaxes = [30, 50, 40, 30, 20, 45] line.label = "Asymmetric Errors" line.color = "red" line.xValues = range(len(line.yValues)) # Even error bars line2 = Line() line2.xValues = range(6) line2.yValues = [35, 40, 45, 40, 55, 50] line2.color = "blue" line2.label = "Symmetric Errors" line2.yErrors = [3, 6, 5, 3, 5, 4] plot.add(line) plot.add(line2) plot.setXLabel("X Label") plot.setYLabel("Y Label") plot.hasLegend() plot.save("errorbars.png")
def histogram_plot(experiment_log_dir, plot_spec_string, output_filename, has_legend, x_limit, verbose): queries = [ plot_utils.plot_spec_string_to_query(plot_spec_string, 0, "HIST") ] plot_data = metaprogram_utils.process_queries(queries, experiment_log_dir, verbose) if "plot_points" not in plot_data: warnings.warn("No data to plot!") return histogram_data = plot_data["plot_points"][0] cumulative_histogram = {} layout = PlotLayout() layout.dpi = 250 for stat_name in histogram_data: plot = Plot() plot.setTitle(stat_name) if has_legend: plot.hasLegend(labelSize=8) if x_limit is not None: plot.setXLimits(0, x_limit) style_plot(plot, stat_name) for key, points in sorted(histogram_data[stat_name].items()): for size, count in itertools.izip(points["bin"], points["count"]): if size not in cumulative_histogram: cumulative_histogram[size] = 0 cumulative_histogram[size] += count line = Line() line.stepFunction("pre") line.label = str(key) line.xValues = points["bin"] line.yValues = points["count"] plot.add(line) layout.addPlot(plot) cumulative_plot = Plot() if x_limit is not None: cumulative_plot.setXLimits(0, x_limit) cumulative_plot.setTitle("Cumulative Histogram for " + stat_name) style_plot(cumulative_plot, stat_name) line = Line() line.stepFunction("pre") line.xValues = sorted(cumulative_histogram.keys()) line.yValues = [cumulative_histogram[key] for key in line.xValues] cumulative_plot.add(line) layout.addPlot(cumulative_plot) layout.save(output_filename)