Beispiel #1
0
def scatterplot(data, title='Scatter plot', symbol=None, X=None):
    "multiline scater plot"
    from graph import GraphBase, GraphLine, GraphSymbols, GraphObjects
    from plotAscii import PSprint, initSH
    SH = initSH()
    try:
        npt = len(data[0])
    except TypeError:
        print 'Input Error, multiple line vectors required'
        return
    rows = len(data)
    top = Toplevel()
    top.title(title)
    graph = GraphBase(top, 300, 300, relief=SUNKEN, border=2)
    w = string.atoi(graph.canvas.cget('width'))
    h = string.atoi(graph.canvas.cget('height'))
    bb = graph._textBoundingBox(title)
    x = w / 2 - (bb[2] - bb[0]) / 2
    y = .05 * h
    graph.canvas.create_text(x, y, text=title, anchor=W, font=SH['font'])

    #    markers=['circle','square','cross','plus','dot','triangle','triangle_down']
    lines = []
    for j in range(rows):
        npt = []
        da = data[j]
        npts = len(da)
        if X != None:
            xa = X[j]
            if len(xa) < npts: xa = range(npts)
        else:
            xa = range(npts)
        for i in range(npts):
            npt.append((xa[i], da[i]))
        line = GraphLine(npt, color='blue')
        lines.append(line)
        # plot symbols
        if symbol != None:
            npt_s = linesubset(npt)
            #	    sym = markers[j%7]
            linea = GraphSymbols(npt_s,
                                 color='blue',
                                 marker='circle',
                                 size=1.5,
                                 fillcolor='blue')
            lines.append(linea)

    graphObject = GraphObjects(lines)
    graph.pack(side=TOP, fill=BOTH, expand=YES)
    graph.draw(graphObject, 'automatic', 'automatic')
    Button(
        top,
        text='Print',
        command=lambda g=graph, p=SH['printer']: PSprint(g, p)).pack(side=LEFT)
    Button(top, text='Close', command=top.destroy).pack(side=LEFT)
    top.mainloop()
Beispiel #2
0
def lineplot(data, title='Line plot', symbol=None, X=None):
    from graph import GraphBase, GraphLine, GraphSymbols, GraphObjects
    from plotAscii import PSprint, initSH
    SH = initSH()
    npt = []
    for i in range(len(data)):
        if X != None:
            npt.append((X[i], data[i]))
        else:
            npt.append((float(i), data[i]))
    top = Toplevel()
    top.title(title)
    graph = GraphBase(top, 300, 300, relief=SUNKEN, border=2)

    w = string.atoi(graph.canvas.cget('width'))
    h = string.atoi(graph.canvas.cget('height'))
    bb = graph._textBoundingBox(title)
    x = w / 2 - (bb[2] - bb[0]) / 2
    y = .05 * h
    graph.canvas.create_text(x, y, text=title, anchor=W, font=SH['font'])

    line = GraphLine(npt, color='blue')
    # plot symbols
    if symbol != None:
        npt_s = linesubset(npt)
        linea = GraphSymbols(npt_s,
                             color='blue',
                             marker='circle',
                             size=1.5,
                             fillcolor='blue')
        graphObject = GraphObjects([line, linea])
    else:
        graphObject = GraphObjects([line])

    graph.pack(side=TOP, fill=BOTH, expand=YES)
    graph.draw(graphObject, 'automatic', 'automatic')
    Button(
        top,
        text='Print',
        command=lambda g=graph, p=SH['printer']: PSprint(g, p)).pack(side=LEFT)
    Button(top, text='Close', command=top.destroy).pack(side=LEFT)