Advanced Graphing
Jump to navigation
Jump to search
Some explanatory notes soon. This is an article about a script to create axes with tick marks, then plot data points to the scale of the graph.
#!/usr/bin/env python # File: axes_graphing.py # originally 2006.05.17 as graph2.py on Scribus wiki # this version 2010.07.25 # creates graph with axes and plots Y values # X values are fixed import scribus xorigin = 64 # x-origin of graph yorigin = 536 # y-origin of graph xaxis=637 #x axis length yaxis=408 #y axis length color="Black" a = 1.5 # width of lines l = 2.0 t = 0.8 # width of scale markers xvalue = [] yvalue = [1,1,4,2,1,0,1,1,4,1,7,2,3,4,4,2,7,5,5,5,5,4,3,2] # graph points polyvalue = [] if scribus.haveDoc(): xtick = xorigin xscale = xaxis/24 # this gives you typographic points per data unit yrange = int(scribus.valueDialog('Maximum Y Scale', 'Enter Top Y Value\n(Scale)')) ymark = int(scribus.valueDialog('Tick Mark Interval', 'Enter Y Interval for Tick Marks')) ytick = yorigin yscale = yaxis/yrange # this gives you typographic points per data unit scribus.setRedraw(1) scribus.setUnit(0) d = scribus.createLine(xorigin,yorigin,xorigin+xaxis,yorigin) # create X axis scribus.setLineWidth(a, d) scribus.setLineColor(color, d) scribus.setFillColor(color, d) e = scribus.createLine(xorigin,yorigin,xorigin,yorigin-yaxis) # create Y axis scribus.setLineWidth(a, e) scribus.setLineColor(color, e) scribus.setFillColor(color, e) ytick = ytick - ymark * yscale nticks = 0 item = 0 while (nticks < 24): xtick = xtick + xscale xvalue.append(xtick) xt = scribus.createLine(xtick, yorigin, xtick, yorigin + 5) # creating X axis tick lines scribus.setLineWidth(t, xt) scribus.setLineColor(color, xt) scribus.setFillColor(color, xt) nticks += 1 while (ytick > (yorigin - yaxis)): yt = scribus.createLine(xorigin, ytick, xorigin - 5, ytick) # creating Y axis tick lines scribus.setLineWidth(t, yt) scribus.setLineColor(color, yt) scribus.setFillColor(color, yt) ytick = ytick - ymark * yscale while (item < 24): # this interleaves the X and Y data for createPolyLine polyvalue.append(xvalue[item]) polyvalue.append((yorigin - yvalue[item] * yscale)) item += 1 poly = scribus.createPolyLine(polyvalue) # this is the actual plotting scribus.setLineWidth(l, poly) scribus.setLineColor(color, poly) scribus.setFillColor("None",poly) scribus.redrawAll()