Advanced Graphing: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
(Created page with '<pre> #!/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 …')
 
No edit summary
Line 1: Line 1:
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.
<pre>
<pre>
#!/usr/bin/env python
#!/usr/bin/env python

Revision as of 18:25, 25 July 2010

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()