GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — bashplotlib/bashplotlib/scatterplot.py at master · trungnt13/bashplotlib Expand file tree/ Copy pathscatterplot.pyMore file actions 154 lines (132 loc) · 4.89 KB / Copy pathscatterplot.pyFile metadata and controls154 lines (132 loc) · 4.89 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 # -*- coding: utf-8 -*- """ Plotting terminal based scatterplots """ from __future__ import print_function import csv import sys import optparse from os.path import isfile from .utils.helpers import * from .utils.commandhelp import scatter def get_scale(series, is_y=False, steps=20): min_val = min(series) max_val = max(series) scaled_series = [] for x in drange(min_val, max_val, (max_val - min_val) / steps, include_stop=True): if x > 0 and scaled_series and max(scaled_series) < 0: scaled_series.append(0.0) scaled_series.append(x) if is_y: scaled_series.reverse() return scaled_series def plot_scatter(xs, ys, size=None, pch='o', colour='red', title=None, return_str=False): ''' Scatter plot. ---------------------- | * | | * | | * | | * | | * | | * | | * | | * | ----------------------- Parameters ---------- xs : list, numpy.ndarray list of x series ys : list, numpy.ndarray list of y series size : int width of plot pch : str any character to represent a points colour : str, list(str) white,aqua,pink,blue,yellow,green,red,grey,black,default,ENDC title : str title for the plot, None = not show return_str : boolean return string represent the plot or print it out, default: False ''' splot = '' plotted = set() cs = colour if size is None: size = 13 if title: splot += print_return_str( box_text(title, 2 * len(get_scale(xs, False, size)) + 1), return_str=return_str) # ====== Top line ====== # splot += print_return_str(' ' + "-" * (len(get_scale(xs, False, size)) + 2), return_str=return_str) # ====== Main plot ====== # for y in get_scale(ys, True, size): splot += print_return_str("|", end=' ', return_str=return_str) for x in get_scale(xs, False, size): point = " " for (i, (xp, yp)) in enumerate(zip(xs, ys)): if xp <= x and yp >= y and (xp, yp) not in plotted: point = pch plotted.add((xp, yp)) if isinstance(cs, list): colour = cs[i] splot += printcolour(point, True, colour, return_str) splot += print_return_str(" |", return_str=return_str) # ====== Bottom line ====== # splot += print_return_str(' ' + "-" * (len(get_scale(xs, False, size)) + 2), return_str=return_str) if return_str: return splot def _plot_scatter(f, xs, ys, size, pch, colour, title): """ Form a complex number. Arguments: f -- comma delimited file w/ x,y coordinates xs -- if f not specified this is a file w/ x coordinates ys -- if f not specified this is a filew / y coordinates size -- size of the plot pch -- shape of the points (any character) colour -- colour of the points title -- title of the plot """ if f: if isinstance(f, str): f = open(f) data = [tuple(line.strip().split(',')) for line in f] xs = [float(i[0]) for i in data] ys = [float(i[1]) for i in data] if len(data[0]) > 2: cs = [i[2].strip() for i in data] else: cs = None else: xs = [float(str(row).strip()) for row in open(xs)] ys = [float(str(row).strip()) for row in open(ys)] if isfile(colour): cs = [str(row).strip() for row in open(colour)] else: cs = colour plot_scatter(xs, ys, size=size, pch=pch, colour=cs, title=title) def main(): parser = optparse.OptionParser(usage=scatter['usage']) parser.add_option('-f', '--file', help='a csv w/ x and y coordinates', default=None, dest='f') parser.add_option('-t', '--title', help='title for the chart', default="", dest='t') parser.add_option('-x', help='x coordinates', default=None, dest='x') parser.add_option('-y', help='y coordinates', default=None, dest='y') parser.add_option('-s', '--size', help='y coordinates', default=20, dest='size', type='int') parser.add_option('-p', '--pch', help='shape of point', default="x", dest='pch') parser.add_option('-c', '--colour', help='colour of the plot (%s)' % colour_help, default='default', dest='colour') opts, args = parser.parse_args() if opts.f is None and (opts.x is None or opts.y is None): opts.f = sys.stdin.readlines() if opts.f or (opts.x and opts.y): _plot_scatter(opts.f, opts.x, opts.y, opts.size, opts.pch, opts.colour, opts.t) else: print("nothing to plot!") if __name__ == "__main__": main() |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |