1141 lines
45 KiB
Python
1141 lines
45 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
# Copyright 2012 California Institute of Technology. ALL RIGHTS RESERVED.
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
#
|
||
|
# United States Government Sponsorship acknowledged. This software is subject to
|
||
|
# U.S. export control laws and regulations and has been classified as 'EAR99 NLR'
|
||
|
# (No [Export] License Required except when exporting to an embargoed country,
|
||
|
# end user, or in support of a prohibited end use). By downloading this software,
|
||
|
# the user agrees to comply with all applicable U.S. export laws and regulations.
|
||
|
# The user has the responsibility to obtain export licenses, or other export
|
||
|
# authority as may be required before exporting this software to any 'EAR99'
|
||
|
# embargoed foreign country or citizen of those countries.
|
||
|
#
|
||
|
# Author: Eric Gurrola
|
||
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
|
||
|
|
||
|
from __future__ import print_function
|
||
|
from iscesys.Compatibility import Compatibility
|
||
|
|
||
|
|
||
|
|
||
|
class GracePlot(object):
|
||
|
"""
|
||
|
GracePlot is a class to facilitate creation of Grace Plots in batch mode
|
||
|
from data in memory.
|
||
|
"""
|
||
|
|
||
|
def __init__(self):
|
||
|
import time
|
||
|
import random
|
||
|
t = time.localtime()
|
||
|
r = int(100000*random.random())
|
||
|
self._defaultFile = "gracetemp_"+str(t[0])+\
|
||
|
str(t[1])+\
|
||
|
str(t[2])+\
|
||
|
str(t[3])+\
|
||
|
str(t[4])+\
|
||
|
str(t[5])+\
|
||
|
"_"+str(r)+".agr"
|
||
|
self._filename = ''
|
||
|
self._psfile =''
|
||
|
self. _weekday = ["Mon",\
|
||
|
"Tue",\
|
||
|
"Wed",\
|
||
|
"Thu",\
|
||
|
"Fri",\
|
||
|
"Sat",\
|
||
|
"Sun"]
|
||
|
self._month = ["",\
|
||
|
"Jan",\
|
||
|
"Feb",\
|
||
|
"Mar",\
|
||
|
"Apr",\
|
||
|
"May",\
|
||
|
"Jun",\
|
||
|
"Jul",\
|
||
|
"Aug",\
|
||
|
"Sep",\
|
||
|
"Oct",\
|
||
|
"Nov",\
|
||
|
"Dec"]
|
||
|
|
||
|
self._fontsList = ["Times-Roman",\
|
||
|
"Times-Italic",\
|
||
|
"Times-Bold",\
|
||
|
"Times-BoldItalic",\
|
||
|
"Helvetica",\
|
||
|
"Helvetica-Oblique",\
|
||
|
"Helvetica-Bold",\
|
||
|
"Helvetica-BoldOblique",\
|
||
|
"Courier",\
|
||
|
"Courier-Oblique",\
|
||
|
"Courier-Bold",\
|
||
|
"Courier-BoldOblique",\
|
||
|
"Symbol",\
|
||
|
"ZapfDingbats"]
|
||
|
|
||
|
self._fonts = {"Times-Roman": 0,\
|
||
|
"Times-Italic": 1,\
|
||
|
"Times-Bold": 2,\
|
||
|
"Times-BoldItalic": 3,\
|
||
|
"Helvetica": 4,\
|
||
|
"Helvetica-Oblique": 5,\
|
||
|
"Helvetica-Bold": 6,\
|
||
|
"Helvetica-BoldOblique":7,\
|
||
|
"Courier": 8,\
|
||
|
"Courier-Oblique": 9,\
|
||
|
"Courier-Bold": 10,\
|
||
|
"Courier-BoldOblique": 11,\
|
||
|
"Symbol": 12,\
|
||
|
"ZapfDingbats": 13}
|
||
|
|
||
|
self._colorsList = ["white",\
|
||
|
"black",\
|
||
|
"red",\
|
||
|
"green",\
|
||
|
"blue",\
|
||
|
"yellow",\
|
||
|
"brown",\
|
||
|
"grey",\
|
||
|
"violet",\
|
||
|
"cyan",\
|
||
|
"magenta",\
|
||
|
"orange",\
|
||
|
"indigo",\
|
||
|
"maroon",\
|
||
|
"turquoise",\
|
||
|
"green4"]
|
||
|
|
||
|
self._colors = {"white": ( 0,(255, 255, 255)),\
|
||
|
"black": ( 1,( 0, 0, 0)),\
|
||
|
"red": ( 2,(255, 0, 0)),\
|
||
|
"green": ( 3,( 0, 255, 0)),\
|
||
|
"blue": ( 4,( 0, 0, 255)),\
|
||
|
"yellow": ( 5,(255, 255, 0)),\
|
||
|
"brown": ( 6,(188, 143, 143)),\
|
||
|
"grey": ( 7,(220, 220, 220)),\
|
||
|
"violet": ( 8,(148, 0, 211)),\
|
||
|
"cyan": ( 9,( 0, 255, 255)),\
|
||
|
"magenta": (10,(255, 0, 255)),\
|
||
|
"orange": (11,(255, 165, 0)),\
|
||
|
"indigo": (12,(114, 33, 188)),\
|
||
|
"maroon": (13,(103, 7, 72)),\
|
||
|
"turquoise":(14,( 64, 224, 208)),\
|
||
|
"green4": (15,( 0, 139, 0))}
|
||
|
|
||
|
self._linestylesList = [ "none",\
|
||
|
"solid",\
|
||
|
"dot",\
|
||
|
"dash",\
|
||
|
"long-dash",\
|
||
|
"dash-dot",\
|
||
|
"long-dash-dot",\
|
||
|
"dash-dot-dot",\
|
||
|
"dash-dash-dot"
|
||
|
]
|
||
|
|
||
|
self._linestyles = { "none": 0,\
|
||
|
"solid": 1,\
|
||
|
"dot": 2,\
|
||
|
"dash": 3,\
|
||
|
"long-dash": 4,\
|
||
|
"dash-dot": 5,\
|
||
|
"long-dash-dot": 6,\
|
||
|
"dash-dot-dot": 7,\
|
||
|
"dash-dash-dot": 8
|
||
|
}
|
||
|
|
||
|
self._typesettingList = [ ("switch to font x", '\\\\f{x}'),\
|
||
|
("switch to font number n", '\\\\f{n}'),\
|
||
|
("return to orginial font", '\\\\f{}'),\
|
||
|
("switch to color x", '\\\\R{x}'),\
|
||
|
("switch to color number n", '\\\\R{n}'),\
|
||
|
("switch to original color", '\\\\R{}'),\
|
||
|
("treat x as hex character codes", '\\\\#{x}'),\
|
||
|
("apply transformation matrix", '\\\\t{xx xy yx yy}'),\
|
||
|
("reset transformation matrix", '\\\\t{}'),\
|
||
|
("zoom x times", '\\\\z{x}'),\
|
||
|
("return to original zoom", '\\\\z{}'),\
|
||
|
("rotate by x degrees", '\\\\r{x}'),\
|
||
|
("slant by factor x", '\\\\l{x}'),\
|
||
|
("shift vertically by x", '\\\\v{x}'),\
|
||
|
("return to unshifted baseline", '\\\\v{}'),\
|
||
|
("shift baseline by x", '\\\\V{x}'),\
|
||
|
("reset baseline", '\\\\V{}'),\
|
||
|
("horizontal shift by x", '\\\\h{x}'),\
|
||
|
("new line", '\\\\n'),\
|
||
|
("begin underline", '\\\\u'),\
|
||
|
("stop underline", '\\\\U'),\
|
||
|
("begin overline", '\\\\o'),\
|
||
|
("stop overline", '\\\\O'),\
|
||
|
("enable kerning", '\\\\Fk'),\
|
||
|
("disable kerning", '\\\\FK'),\
|
||
|
("enable ligatures", '\\\\Fl'),\
|
||
|
("disable ligatures", '\\\\FL'),\
|
||
|
("mark current position as n", '\\\\m{n}'),\
|
||
|
("return to position n", '\\\\M{n}'),\
|
||
|
("LtoR substring direction", '\\\\dl'),\
|
||
|
("RtoL substring direction", '\\\\dr'),\
|
||
|
("LtoR text advancing", '\\\\dL'),\
|
||
|
("RtoL text advancing", '\\\\dR'),\
|
||
|
("switch to Symbol font", '\\\\x'),\
|
||
|
("increase size", '\\\\+'),\
|
||
|
("decrease size", '\\\\='),\
|
||
|
("begin subscript", '\\\\s'),\
|
||
|
("begin superscript", '\\\\S'),\
|
||
|
("absolute transformation matrix", '\\\\T{xx xy yx yy}'),\
|
||
|
("absolute zoom x times", '\\\\Z{x}'),\
|
||
|
("make font oblique", '\\\\q'),\
|
||
|
("undo oblique", '\\\\Q'),\
|
||
|
("return to normal style", '\\\\N'),\
|
||
|
("print \\", '\\\\')\
|
||
|
]
|
||
|
|
||
|
self._typesetting = { "switch to font x": '\\\\f{x}',\
|
||
|
"switch to font number n": '\\\\f{n}',\
|
||
|
"return to orginial font": '\\\\f{}',\
|
||
|
"switch to color x": '\\\\R{x}',\
|
||
|
"switch to color number n": '\\\\R{n}',\
|
||
|
"switch to original color": '\\\\R{}',\
|
||
|
"treat x as hex character codes": '\\\\#{x}',\
|
||
|
"apply transformation matrix": '\\\\t{xx xy yx yy}',\
|
||
|
"reset transformation matrix": '\\\\t{}',\
|
||
|
"zoom x times": '\\\\z{x}',\
|
||
|
"return to original zoom": '\\\\z{}',\
|
||
|
"rotate by x degrees": '\\\\r{x}',\
|
||
|
"slant by factor x": '\\\\l{x}',\
|
||
|
"shift vertically by x": '\\\\v{x}',\
|
||
|
"return to unshifted baseline": '\\\\v{}',\
|
||
|
"shift baseline by x": '\\\\V{x}',\
|
||
|
"reset baseline": '\\\\V{}',\
|
||
|
"horizontal shift by x": '\\\\h{x}',\
|
||
|
"new line": '\\\\n',\
|
||
|
"begin underline": '\\\\u',\
|
||
|
"stop underline": '\\\\U',\
|
||
|
"begin overline": '\\\\o',\
|
||
|
"stop overline": '\\\\O',\
|
||
|
"enable kerning": '\\\\Fk',\
|
||
|
"disable kerning": '\\\\FK',\
|
||
|
"enable ligatures": '\\\\Fl',\
|
||
|
"disable ligatures": '\\\\FL',\
|
||
|
"mark current position as n": '\\\\m{n}',\
|
||
|
"return to position n": '\\\\M{n}',\
|
||
|
"LtoR substring direction": '\\\\dl',\
|
||
|
"RtoL substring direction": '\\\\dr',\
|
||
|
"LtoR text advancing": '\\\\dL',\
|
||
|
"RtoL text advancing": '\\\\dR',\
|
||
|
"switch to Symbol font": '\\\\x',\
|
||
|
"increase size": '\\\\+',\
|
||
|
"decrease size": '\\\\=',\
|
||
|
"begin subscript": '\\\\s',\
|
||
|
"begin superscript": '\\\\S',\
|
||
|
"absolute transformation matrix": '\\\\T{xx xy yx yy}',\
|
||
|
"absolute zoom x times": '\\\\Z{x}',\
|
||
|
"make font oblique": '\\\\q',\
|
||
|
"undo oblique": '\\\\Q',\
|
||
|
"return to normal style": '\\\\N',\
|
||
|
"print \\": '\\\\'\
|
||
|
}
|
||
|
|
||
|
|
||
|
self._pageX = '800'
|
||
|
self._pageY = '600'
|
||
|
|
||
|
self._minX = ''
|
||
|
self._maxX = ''
|
||
|
self._minY = ''
|
||
|
self._maxY = ''
|
||
|
|
||
|
self._tickMajorDeltaX = '1.0'
|
||
|
self._tickMajorSizeX = '1.0'
|
||
|
self._tickMajorColorX = str(self.getColorNum("black"))
|
||
|
self._tickMajorWidthX = '1.0'
|
||
|
self._tickMajorStyleX = '1'
|
||
|
self._tickMajorGridX = 'off'
|
||
|
self._tickMinorNumX = '1'
|
||
|
self._tickMinorColorX = str(self.getColorNum("black"))
|
||
|
self._tickMinorWidthX = '1.0'
|
||
|
self._tickMinorStyleX = '1'
|
||
|
self._tickMinorGridX ='off'
|
||
|
self._tickMinorSizeX = '0.5'
|
||
|
|
||
|
self._tickLabelOnX = 'on'
|
||
|
self._tickLabelPrecX = '5'
|
||
|
self._tickLabelAngleX = '0'
|
||
|
self._tickLabelSkipX = '0'
|
||
|
self._tickLabelSizeX = '1.0'
|
||
|
self._tickLabelFontX = str(self.getFontNum("Times-Roman"))
|
||
|
self._tickLabelColorX = str(self.getColorNum("black"))
|
||
|
|
||
|
self._tickMajorDeltaY = '1.0'
|
||
|
self._tickMajorSizeY = '1.0'
|
||
|
self._tickMajorColorY = str(self.getColorNum("black"))
|
||
|
self._tickMajorWidthY = '1.0'
|
||
|
self._tickMajorStyleY = '1'
|
||
|
self._tickMajorGridY = 'off'
|
||
|
|
||
|
self._tickMinorNumY = '1'
|
||
|
self._tickMinorColorY = str(self.getColorNum("black"))
|
||
|
self._tickMinorWidthY = '1.0'
|
||
|
self._tickMinorStyleY = '1'
|
||
|
self._tickMinorGridY ='off'
|
||
|
self._tickMinorSizeY = '0.5'
|
||
|
|
||
|
self._tickLabelOnY = 'on'
|
||
|
self._tickLabelPrecY = '5'
|
||
|
self._tickLabelAngleY = '0'
|
||
|
self._tickLabelSkipY = '0'
|
||
|
self._tickLabelSizeY = '1.0'
|
||
|
self._tickLabelFontY = str(self.getFontNum("Times-Roman"))
|
||
|
self._tickLabelColorY = str(self.getColorNum("black"))
|
||
|
|
||
|
self._defaultFont = str(self.getFontNum("Times-Roman"))
|
||
|
self._defaultColor = str(self.getColorNum("black"))
|
||
|
self._defaultLineWidth = '1.0'
|
||
|
self._defaultLineStyle = '1'
|
||
|
self._defaultPattern = '1'
|
||
|
self._defaultCharSize = '1.0'
|
||
|
self._defaultSymbolSize = '1.0'
|
||
|
self._defaultSFormat = '%.8g'
|
||
|
|
||
|
self._backColor = str(self.getColorNum("white"))
|
||
|
|
||
|
self._title = ''
|
||
|
self._titleSize = '1.5'
|
||
|
self._titleFont = str(self.getFontNum("Times-Bold"))
|
||
|
self._titleColor = str(self.getColorNum("black"))
|
||
|
self._subtitle = ''
|
||
|
self._subtitleSize = '1.0'
|
||
|
self._subtitleFont = str(self.getFontNum("Times-Roman"))
|
||
|
self._subtitleColor = str(self.getColorNum("black"))
|
||
|
|
||
|
self._labelX = ''
|
||
|
self._labelSizeX = '1.0'
|
||
|
self._labelFontX = str(self.getFontNum("Times-Roman"))
|
||
|
self._labelColorX = str(self.getColorNum("black"))
|
||
|
self._barColorX = str(self.getColorNum("black"))
|
||
|
self._barWidthX = '1.0'
|
||
|
self._barStyleX = '1'
|
||
|
|
||
|
self._labelY = ''
|
||
|
self._labelSizeY = '1.0'
|
||
|
self._labelFontY = str(self.getFontNum("Times-Roman"))
|
||
|
self._labelColorY = str(self.getColorNum("black"))
|
||
|
self._barColorY = str(self.getColorNum("black"))
|
||
|
self._barWidthY = '1.0'
|
||
|
self._barStyleY = '1'
|
||
|
|
||
|
self._numSetsFormat = 0
|
||
|
self._lineWidth = ['1']
|
||
|
self._lineColor = ['1']
|
||
|
self._lineStyle = ['1']
|
||
|
self._lineType = ['1']
|
||
|
self._linePattern = ['1']
|
||
|
|
||
|
self._timestamp = self._weekday[t[6]]+" "+\
|
||
|
self._month[t[1]] +" "+\
|
||
|
str(t[2]) +" "+\
|
||
|
str(t[3])+":"+str(t[4])+":"+str(t[5])+" "+\
|
||
|
str(t[0])
|
||
|
return
|
||
|
# end __init__
|
||
|
|
||
|
def page(self,x,y):
|
||
|
self._pageX = x
|
||
|
self._pageY = y
|
||
|
#end setPage
|
||
|
|
||
|
def title(self,a):
|
||
|
self._title = a
|
||
|
def titleFont(self,f):
|
||
|
self._titleFont = str(self._fonts[f])
|
||
|
def titleSize(self,s):
|
||
|
self._titleSize = str(s)
|
||
|
|
||
|
def subtitle(self,a):
|
||
|
self._subtitle = a
|
||
|
def subtitleFont(self,f):
|
||
|
self._subtitleFont = str(self._fonts[f])
|
||
|
def subtitleSize(self,s):
|
||
|
self._subtitleSize = str(s)
|
||
|
|
||
|
def minX(self,x):
|
||
|
self._minX = str(x)
|
||
|
def maxX(self,x):
|
||
|
self._maxX = str(x)
|
||
|
def deltaX(self,x):
|
||
|
self._tickMajorDeltaX = str(x)
|
||
|
def labelX(self,x):
|
||
|
self._labelX = str(x)
|
||
|
def labelFontX(self,x):
|
||
|
self._labelFontX = str(self._fonts[x])
|
||
|
def labelSizeX(self,x):
|
||
|
self._labelSizeX = str(x)
|
||
|
|
||
|
def minY(self,x):
|
||
|
self._minY = str(x)
|
||
|
def maxY(self,x):
|
||
|
self._maxY = str(x)
|
||
|
def deltaY(self,x):
|
||
|
self._tickMajorDeltaY = str(x)
|
||
|
def labelY(self,x):
|
||
|
self._labelY = str(x)
|
||
|
def labelFontY(self,x):
|
||
|
self._labelFontY = str(self._fonts[x])
|
||
|
def labelSizeY(self,x):
|
||
|
self._labelSizeY = str(x)
|
||
|
|
||
|
def thickerLines(self,sets=[]):
|
||
|
if len(sets) == 0:
|
||
|
for i in range(self._numSetsFormat):
|
||
|
self._lineWidth[i] = str(int(self._lineWidth[i])+1)
|
||
|
return
|
||
|
|
||
|
for i in range(min(len(sets),self._numSetsFormat)):
|
||
|
self._lineWidth[sets[i]] = str(int(self._lineWidth[i])+1)
|
||
|
|
||
|
def thickLines(self,w=2,widths=[],sets=[]):
|
||
|
"""
|
||
|
thickLines([w,[sets,[widths]]]):
|
||
|
|
||
|
w = default thickness to apply to formatted
|
||
|
sets. The default is overridden if a
|
||
|
list of sets and corresponding widths are
|
||
|
given.
|
||
|
widths = widths to apply to list of sets..
|
||
|
If empty the default width is used.
|
||
|
If length is less than length of sets
|
||
|
then the default width is applied to
|
||
|
additional sets.
|
||
|
sets = list of sets to apply thickLines to.
|
||
|
If empty or ommitted apply the default
|
||
|
width to all formatted sets as determined
|
||
|
by numSetsFormat.
|
||
|
"""
|
||
|
|
||
|
if len(sets) == 0 and len(widths) == 0 and w == 0:
|
||
|
return
|
||
|
|
||
|
if len(sets) == 0 and len(widths) == 0:
|
||
|
for i in range(self._numSetsFormat):
|
||
|
self._lineWidth[i] = str(w)
|
||
|
return
|
||
|
|
||
|
if len(sets) == 0:
|
||
|
for i in range(min(len(widths),self._numSetsFormat)):
|
||
|
self._lineWidth[i] = str(widths[i])
|
||
|
return
|
||
|
|
||
|
if len(widths) == 0:
|
||
|
for i in range(min(len(sets),self._numSetsFormat)):
|
||
|
self._lineWidth[sets[i]] = str(w)
|
||
|
return
|
||
|
|
||
|
if w == 0:
|
||
|
for i in range(min(len(widths),len(sets),self._numSetsFormat)):
|
||
|
self._lineWidth[sets[i]] = str(widths[i])
|
||
|
return
|
||
|
|
||
|
for i in range(self._numSetsFormat):
|
||
|
self._lineWidth[i] = str(w)
|
||
|
for i in range(min(len(widths),len(sets),self._numSetsFormat)):
|
||
|
self._lineWidth[sets[i]] = str(widths[i])
|
||
|
|
||
|
return
|
||
|
|
||
|
def thickAxes(self,n=2):
|
||
|
self._barWidthX = str(n)
|
||
|
self._barWidthY = str(n)
|
||
|
self._tickMajorWidthX = str(n)
|
||
|
self._tickMajorWidthY = str(n)
|
||
|
self._tickMinorWidthX = str(n)
|
||
|
self._tickMinorWidthY = str(n)
|
||
|
return
|
||
|
|
||
|
def numSetsFormat(self,num):
|
||
|
"""
|
||
|
numSetsFormat(num):
|
||
|
|
||
|
num = number of sets to receive line formatting
|
||
|
|
||
|
Sets the number of data sets to have line formatting and
|
||
|
also initialize the line formatting for the given number
|
||
|
of sets to defaults. The defaults can be overwritten by
|
||
|
explicit calls to the following methods:
|
||
|
|
||
|
setWidths()
|
||
|
setColors()
|
||
|
setStyles()
|
||
|
|
||
|
There may be more data sets than those whose lines are formatted.
|
||
|
The additional sets will receive grace default formatting. Those
|
||
|
sets receiving special formatting must be the first num sets in
|
||
|
the list of [x,y] pairs of lists.
|
||
|
"""
|
||
|
self._numSetsFormat = num
|
||
|
self._lineWidth = []
|
||
|
self._lineColor = []
|
||
|
self._lineType = []
|
||
|
self._lineStyle = []
|
||
|
self._linePattern = []
|
||
|
nc = len(self._colorsList)
|
||
|
ns = len(self._linestylesList)
|
||
|
for i in range(num):
|
||
|
self._lineWidth.append(self._defaultLineWidth)
|
||
|
self._lineColor.append(str((i%nc) + 1))
|
||
|
self._lineStyle.append(str(((i/ns)%ns) + 1))
|
||
|
self._lineType.append('1')
|
||
|
self._linePattern.append('1')
|
||
|
return
|
||
|
|
||
|
|
||
|
def setColors(self,colors=[],sets=[]):
|
||
|
"""
|
||
|
setColors(colors,[sets]):
|
||
|
|
||
|
colors = list of colors to be applied
|
||
|
to formatted sets
|
||
|
sets = optional list of sets to which
|
||
|
to apply colors
|
||
|
|
||
|
If the length of the sets list is 0 or if
|
||
|
no list of sets is given, then the colors
|
||
|
are applied sequentially to the formatted
|
||
|
sets up to the number of sets receiving
|
||
|
formatting as determined by previously calling
|
||
|
numSetsFormat. If the length of sets is
|
||
|
not 0, then the colors are applied to the
|
||
|
sets in the list. If the length of sets
|
||
|
is larger than the length of colors then
|
||
|
the last color in the list is used for
|
||
|
the remaining sets.
|
||
|
"""
|
||
|
|
||
|
if len(colors) == 0:
|
||
|
return
|
||
|
|
||
|
if len(sets) == 0:
|
||
|
for i in range(min(len(colors),self._numSetsFormat)):
|
||
|
self._lineColor[i] = str(self.getColorNum(colors[i]))
|
||
|
return
|
||
|
|
||
|
for i in range(min(len(sets),self._numSetsFormat)):
|
||
|
self._lineColor[sets[i]] = str(self.getColorNum(colors[min(i,len(colors)-1)]))
|
||
|
|
||
|
return
|
||
|
|
||
|
def setStyles(self,styles=[],sets=[]):
|
||
|
"""
|
||
|
"""
|
||
|
|
||
|
if len(styles) == 0:
|
||
|
return
|
||
|
|
||
|
if len(sets) == 0:
|
||
|
for i in range(min(len(styles),self._numSetsFormat)):
|
||
|
self._lineStyle[i] = str(self.getLineStyleNum(styles[i]))
|
||
|
return
|
||
|
|
||
|
for i in range(min(len(sets),self._numSetsFormat)):
|
||
|
self._lineStyle[sets[i]] = str(self.getLineStyleNum(styles[min(i,len(styles)-1)]))
|
||
|
|
||
|
return
|
||
|
|
||
|
def toScreen(self,dat):
|
||
|
import os
|
||
|
if len(self._filename) == 0:
|
||
|
self.toGraceFile(dat)
|
||
|
os.system("xmgrace "+self._defaultFile)
|
||
|
os.system("rm "+self._defaultFile)
|
||
|
else:
|
||
|
os.system("xmgrace "+self._filename)
|
||
|
|
||
|
return
|
||
|
|
||
|
def toPS(self,dat,psfile):
|
||
|
import os
|
||
|
if len(psfile) == 0:
|
||
|
print("No psfile name given")
|
||
|
return
|
||
|
self._psfile = psfile
|
||
|
|
||
|
if len(self._filename) == 0:
|
||
|
self.toGraceFile(dat)
|
||
|
os.system("gracebat "+self._defaultFile+" -printfile "+psfile)
|
||
|
os.system("rm "+self._defaultFile)
|
||
|
else:
|
||
|
os.system("gracebat "+self._filename+" -printfile "+psfile)
|
||
|
|
||
|
return
|
||
|
|
||
|
def toEPS(self,dat,epsfile):
|
||
|
import os
|
||
|
if len(epsfile) == 0:
|
||
|
print("No epsfile name given")
|
||
|
return
|
||
|
|
||
|
psf = epsfile.strip('.eps')+'.ps'
|
||
|
|
||
|
if len(self._filename) == 0:
|
||
|
self.toGraceFile(dat)
|
||
|
if len(self._psfile) == 0:
|
||
|
os.system("gracebat "+self._defaultFile+" -printfile "+psf)
|
||
|
os.system("ps2epsi "+psf+" "+epsfile)
|
||
|
os.system("rm "+self._defaultFile)
|
||
|
if len(self._psfile) == 0:
|
||
|
os.system("rm "+psf)
|
||
|
else:
|
||
|
if self._psfile != psf:
|
||
|
os.system("gracebat "+self._filename+" -printfile "+psf)
|
||
|
os.system("ps2epsi "+psf+" "+epsfile)
|
||
|
if len(self._psfile) == 0:
|
||
|
os.system("rm "+psf)
|
||
|
|
||
|
return
|
||
|
|
||
|
def toPDF(self,dat,pdffile):
|
||
|
import os
|
||
|
if len(pdffile) == 0:
|
||
|
print("No pdffile name given")
|
||
|
return
|
||
|
|
||
|
psf = pdffile.strip('.pdf')+'.ps'
|
||
|
|
||
|
if len(self._filename) == 0:
|
||
|
self.toGraceFile(dat)
|
||
|
if self._psfile != psf:
|
||
|
os.system("gracebat "+self._defaultFile+" -printfile "+psf)
|
||
|
os.system("ps2pdf "+psf+" "+pdffile)
|
||
|
os.system("rm "+self._defaultFile)
|
||
|
if self._psfile != psf:
|
||
|
os.system("rm "+psf)
|
||
|
else:
|
||
|
if self._psfile != psf:
|
||
|
os.system("gracebat "+self._filename+" -printfile "+psf)
|
||
|
os.system("ps2pdf "+psf+" "+pdffile)
|
||
|
if self._psfile != psf:
|
||
|
os.system("rm "+psf)
|
||
|
|
||
|
return
|
||
|
|
||
|
def toGraceFile(self,dat,filename=''):
|
||
|
"""
|
||
|
toGraceFile(dat,[filename])
|
||
|
|
||
|
dat = [[x1,y1],[x2,y2],...]
|
||
|
xi = list of x values for ith set
|
||
|
yi = list of y values for ith set
|
||
|
|
||
|
filename = name of grace file to write to.
|
||
|
|
||
|
If no filename is given then a temporary name is constructed
|
||
|
based on the time of file creation and has a random number
|
||
|
encoded into the filename to ensure uniqueness.
|
||
|
"""
|
||
|
|
||
|
# If no filename is given use the one created
|
||
|
# when the GracePlot object was instantiated
|
||
|
|
||
|
if len(filename) != 0:
|
||
|
self._filename = filename
|
||
|
fname = filename
|
||
|
else:
|
||
|
fname = self._defaultFile
|
||
|
|
||
|
FIL = open(fname,'w')
|
||
|
FIL.write(self.graceHdr())
|
||
|
|
||
|
for iset in range(len(dat)):
|
||
|
FIL.write('@target G0.S'+str(iset)+'\n')
|
||
|
FIL.write('@type xy\n')
|
||
|
for ix in range(len(dat[iset][0])):
|
||
|
FIL.write(str(dat[iset][0][ix])+' '+str(dat[iset][1][ix])+'\n')
|
||
|
|
||
|
FIL.write('&\n')
|
||
|
|
||
|
FIL.close()
|
||
|
return
|
||
|
|
||
|
def graceHdr(self):
|
||
|
hdr = '# Grace project file\n'
|
||
|
hdr = hdr + '#\n'
|
||
|
if len(self._minX) != 0:
|
||
|
hdr = hdr + '@version 50110\n'
|
||
|
|
||
|
if len(self._pageX) != 0 and len(self._pageY) != 0:
|
||
|
hdr = hdr + '@page size '+\
|
||
|
self._pageX+', '+\
|
||
|
self._pageY+'\n'
|
||
|
|
||
|
hdr = hdr + '@page scroll 5%\n'
|
||
|
hdr = hdr + '@page inout 5%\n'
|
||
|
hdr = hdr + '@link page off\n'
|
||
|
hdr = hdr + '@map font 0 to "' +self.getFont(0) +'", "'+self.getFont(0) +'"\n'
|
||
|
hdr = hdr + '@map font 1 to "' +self.getFont(1) +'", "'+self.getFont(1) +'"\n'
|
||
|
hdr = hdr + '@map font 2 to "' +self.getFont(2) +'", "'+self.getFont(2) +'"\n'
|
||
|
hdr = hdr + '@map font 3 to "' +self.getFont(3) +'", "'+self.getFont(3) +'"\n'
|
||
|
hdr = hdr + '@map font 4 to "' +self.getFont(4) +'", "'+self.getFont(4) +'"\n'
|
||
|
hdr = hdr + '@map font 5 to "' +self.getFont(5) +'", "'+self.getFont(5) +'"\n'
|
||
|
hdr = hdr + '@map font 6 to "' +self.getFont(6) +'", "'+self.getFont(6) +'"\n'
|
||
|
hdr = hdr + '@map font 7 to "' +self.getFont(7) +'", "'+self.getFont(7) +'"\n'
|
||
|
hdr = hdr + '@map font 8 to "' +self.getFont(8) +'", "'+self.getFont(8) +'"\n'
|
||
|
hdr = hdr + '@map font 9 to "' +self.getFont(9) +'", "'+self.getFont(9) +'"\n'
|
||
|
hdr = hdr + '@map font 10 to "'+self.getFont(10)+'", "'+self.getFont(10)+'"\n'
|
||
|
hdr = hdr + '@map font 11 to "'+self.getFont(11)+'", "'+self.getFont(11)+'"\n'
|
||
|
hdr = hdr + '@map font 12 to "'+self.getFont(12)+'", "'+self.getFont(12)+'"\n'
|
||
|
hdr = hdr + '@map font 13 to "'+self.getFont(13)+'", "'+self.getFont(13)+'"\n'
|
||
|
hdr = hdr + '@map color 0 to ' +str(self.getRGB(0)) +', "'+self.getColor(0) +'"\n'
|
||
|
hdr = hdr + '@map color 1 to ' +str(self.getRGB(1)) +', "'+self.getColor(1) +'"\n'
|
||
|
hdr = hdr + '@map color 2 to ' +str(self.getRGB(2)) +', "'+self.getColor(2) +'"\n'
|
||
|
hdr = hdr + '@map color 3 to ' +str(self.getRGB(3)) +', "'+self.getColor(3) +'"\n'
|
||
|
hdr = hdr + '@map color 4 to ' +str(self.getRGB(4)) +', "'+self.getColor(4) +'"\n'
|
||
|
hdr = hdr + '@map color 5 to ' +str(self.getRGB(5)) +', "'+self.getColor(5) +'"\n'
|
||
|
hdr = hdr + '@map color 6 to ' +str(self.getRGB(6)) +', "'+self.getColor(6) +'"\n'
|
||
|
hdr = hdr + '@map color 7 to ' +str(self.getRGB(7)) +', "'+self.getColor(7) +'"\n'
|
||
|
hdr = hdr + '@map color 8 to ' +str(self.getRGB(8)) +', "'+self.getColor(8) +'"\n'
|
||
|
hdr = hdr + '@map color 9 to ' +str(self.getRGB(9)) +', "'+self.getColor(9) +'"\n'
|
||
|
hdr = hdr + '@map color 10 to '+str(self.getRGB(10))+', "'+self.getColor(10)+'"\n'
|
||
|
hdr = hdr + '@map color 11 to '+str(self.getRGB(11))+', "'+self.getColor(11)+'"\n'
|
||
|
hdr = hdr + '@map color 12 to '+str(self.getRGB(12))+', "'+self.getColor(12)+'"\n'
|
||
|
hdr = hdr + '@map color 13 to '+str(self.getRGB(13))+', "'+self.getColor(13)+'"\n'
|
||
|
hdr = hdr + '@map color 14 to '+str(self.getRGB(14))+', "'+self.getColor(14)+'"\n'
|
||
|
hdr = hdr + '@map color 15 to '+str(self.getRGB(15))+', "'+self.getColor(15)+'"\n'
|
||
|
hdr = hdr + '@reference date 0\n'
|
||
|
hdr = hdr + '@date wrap off\n'
|
||
|
hdr = hdr + '@date wrap year 1950\n'
|
||
|
hdr = hdr + '@default linewidth '+self._defaultLineWidth+'\n'
|
||
|
hdr = hdr + '@default linestyle '+self._defaultLineStyle+'\n'
|
||
|
hdr = hdr + '@default color '+self._defaultColor+'\n'
|
||
|
hdr = hdr + '@default pattern '+self._defaultPattern+'\n'
|
||
|
hdr = hdr + '@default font '+self._defaultFont+'\n'
|
||
|
hdr = hdr + '@default char size '+self._defaultCharSize+'\n'
|
||
|
hdr = hdr + '@default symbol size '+self._defaultSymbolSize+'\n'
|
||
|
hdr = hdr + '@default sformat "'+self._defaultSFormat+'"\n'
|
||
|
hdr = hdr + '@background color '+self._backColor+'\n'
|
||
|
hdr = hdr + '@page background fill on\n'
|
||
|
hdr = hdr + '@timestamp off\n'
|
||
|
hdr = hdr + '@timestamp 0.03, 0.03\n'
|
||
|
hdr = hdr + '@timestamp color 1\n'
|
||
|
hdr = hdr + '@timestamp rot 0\n'
|
||
|
hdr = hdr + '@timestamp font 0\n'
|
||
|
hdr = hdr + '@timestamp char size 1.000000\n'
|
||
|
hdr = hdr + '@timestamp def "'+self._timestamp+'"\n'
|
||
|
hdr = hdr + '@r0 off\n'
|
||
|
hdr = hdr + '@link r0 to g0\n'
|
||
|
hdr = hdr + '@r0 type above\n'
|
||
|
hdr = hdr + '@r0 linestyle 1\n'
|
||
|
hdr = hdr + '@r0 linewidth 1.0\n'
|
||
|
hdr = hdr + '@r0 color 1\n'
|
||
|
hdr = hdr + '@r0 line 0, 0, 0, 0\n'
|
||
|
hdr = hdr + '@r1 off\n'
|
||
|
hdr = hdr + '@link r1 to g0\n'
|
||
|
hdr = hdr + '@r1 type above\n'
|
||
|
hdr = hdr + '@r1 linestyle 1\n'
|
||
|
hdr = hdr + '@r1 linewidth 1.0\n'
|
||
|
hdr = hdr + '@r1 color 1\n'
|
||
|
hdr = hdr + '@r1 line 0, 0, 0, 0\n'
|
||
|
hdr = hdr + '@r2 off\n'
|
||
|
hdr = hdr + '@link r2 to g0\n'
|
||
|
hdr = hdr + '@r2 type above\n'
|
||
|
hdr = hdr + '@r2 linestyle 1\n'
|
||
|
hdr = hdr + '@r2 linewidth 1.0\n'
|
||
|
hdr = hdr + '@r2 color 1\n'
|
||
|
hdr = hdr + '@r2 line 0, 0, 0, 0\n'
|
||
|
hdr = hdr + '@r3 off\n'
|
||
|
hdr = hdr + '@link r3 to g0\n'
|
||
|
hdr = hdr + '@r3 type above\n'
|
||
|
hdr = hdr + '@r3 linestyle 1\n'
|
||
|
hdr = hdr + '@r3 linewidth 1.0\n'
|
||
|
hdr = hdr + '@r3 color 1\n'
|
||
|
hdr = hdr + '@r3 line 0, 0, 0, 0\n'
|
||
|
hdr = hdr + '@r4 off\n'
|
||
|
hdr = hdr + '@link r4 to g0\n'
|
||
|
hdr = hdr + '@r4 type above\n'
|
||
|
hdr = hdr + '@r4 linestyle 1\n'
|
||
|
hdr = hdr + '@r4 linewidth 1.0\n'
|
||
|
hdr = hdr + '@r4 color 1\n'
|
||
|
hdr = hdr + '@r4 line 0, 0, 0, 0\n'
|
||
|
hdr = hdr + '@g0 on\n'
|
||
|
hdr = hdr + '@g0 hidden false\n'
|
||
|
hdr = hdr + '@g0 type XY\n'
|
||
|
hdr = hdr + '@g0 stacked false\n'
|
||
|
hdr = hdr + '@g0 bar hgap 0.000000\n'
|
||
|
hdr = hdr + '@g0 fixedpoint off\n'
|
||
|
hdr = hdr + '@g0 fixedpoint type 0\n'
|
||
|
hdr = hdr + '@g0 fixedpoint xy 0.000000, 0.000000\n'
|
||
|
hdr = hdr + '@g0 fixedpoint format general general\n'
|
||
|
hdr = hdr + '@g0 fixedpoint prec 6, 6\n'
|
||
|
hdr = hdr + '@with g0\n'
|
||
|
if len(self._minX) != 0:
|
||
|
hdr = hdr + '@ world xmin '+self._minX+'\n'
|
||
|
|
||
|
if len(self._maxX) != 0:
|
||
|
hdr = hdr + '@ world xmax '+self._maxX+'\n'
|
||
|
|
||
|
if len(self._minY) != 0:
|
||
|
hdr = hdr + '@ world ymin '+self._minY+'\n'
|
||
|
if len(self._maxY) != 0:
|
||
|
hdr = hdr + '@ world ymax '+self._maxY+'\n'
|
||
|
|
||
|
hdr = hdr + '@ stack world 0, 0, 0, 0\n'
|
||
|
hdr = hdr + '@ znorm 1\n'
|
||
|
hdr = hdr + '@ view xmin 0.150000\n'
|
||
|
hdr = hdr + '@ view xmax 1.150000\n'
|
||
|
hdr = hdr + '@ view ymin 0.150000\n'
|
||
|
hdr = hdr + '@ view ymax 0.850000\n'
|
||
|
hdr = hdr + '@ title "'+self._title+'"\n'
|
||
|
hdr = hdr + '@ title font '+self._titleFont+'\n'
|
||
|
hdr = hdr + '@ title size '+self._titleSize+'\n'
|
||
|
hdr = hdr + '@ title color '+self._titleColor+'\n'
|
||
|
hdr = hdr + '@ subtitle "'+self._subtitle+'"\n'
|
||
|
hdr = hdr + '@ subtitle font '+self._subtitleFont+'\n'
|
||
|
hdr = hdr + '@ subtitle size '+self._subtitleSize+'\n'
|
||
|
hdr = hdr + '@ subtitle color '+self._subtitleColor+'\n'
|
||
|
hdr = hdr + '@ xaxes scale Normal\n'
|
||
|
hdr = hdr + '@ yaxes scale Normal\n'
|
||
|
hdr = hdr + '@ xaxes invert off\n'
|
||
|
hdr = hdr + '@ yaxes invert off\n'
|
||
|
hdr = hdr + '@ xaxis on\n'
|
||
|
hdr = hdr + '@ xaxis type zero false\n'
|
||
|
hdr = hdr + '@ xaxis offset 0.000000 , 0.000000\n'
|
||
|
hdr = hdr + '@ xaxis bar on\n'
|
||
|
hdr = hdr + '@ xaxis bar color '+self._barColorX+'\n'
|
||
|
hdr = hdr + '@ xaxis bar linestyle '+self._barStyleX+'\n'
|
||
|
hdr = hdr + '@ xaxis bar linewidth '+self._barWidthX+'\n'
|
||
|
hdr = hdr + '@ xaxis label "'+self._labelX+'"\n'
|
||
|
hdr = hdr + '@ xaxis label layout para\n'
|
||
|
hdr = hdr + '@ xaxis label place auto\n'
|
||
|
hdr = hdr + '@ xaxis label char size '+self._labelSizeX+'\n'
|
||
|
hdr = hdr + '@ xaxis label font '+self._labelFontX+'\n'
|
||
|
hdr = hdr + '@ xaxis label color '+self._labelColorX+'\n'
|
||
|
hdr = hdr + '@ xaxis label place normal\n'
|
||
|
hdr = hdr + '@ xaxis tick on\n'
|
||
|
hdr = hdr + '@ xaxis tick major '+self._tickMajorDeltaX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick minor ticks '+self._tickMinorNumX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick default 6\n'
|
||
|
hdr = hdr + '@ xaxis tick place rounded true\n'
|
||
|
hdr = hdr + '@ xaxis tick in\n'
|
||
|
hdr = hdr + '@ xaxis tick major size '+self._tickMajorSizeX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick major color '+self._tickMajorColorX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick major linewidth '+self._tickMajorWidthX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick major linestyle '+self._tickMajorStyleX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick major grid '+self._tickMajorGridX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick minor color '+self._tickMinorColorX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick minor linewidth '+self._tickMinorWidthX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick minor linestyle '+self._tickMinorStyleX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick minor grid '+self._tickMinorGridX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick minor size '+self._tickMinorSizeX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel '+self._tickLabelOnX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel format general\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel prec '+self._tickLabelPrecX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel formula ""\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel append ""\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel prepend ""\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel angle '+self._tickLabelAngleX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel skip '+self._tickLabelSkipX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel stagger 0\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel place normal\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel offset auto\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel offset 0.000000 , 0.010000\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel start type auto\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel start 0.000000\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel stop type auto\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel stop 0.000000\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel char size '+self._tickLabelSizeX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel font '+self._tickLabelFontX+'\n'
|
||
|
hdr = hdr + '@ xaxis ticklabel color '+self._tickLabelColorX+'\n'
|
||
|
hdr = hdr + '@ xaxis tick place both\n'
|
||
|
hdr = hdr + '@ xaxis tick spec type none\n'
|
||
|
hdr = hdr + '@ yaxis on\n'
|
||
|
hdr = hdr + '@ yaxis type zero false\n'
|
||
|
hdr = hdr + '@ yaxis offset 0.000000 , 0.000000\n'
|
||
|
hdr = hdr + '@ yaxis bar on\n'
|
||
|
hdr = hdr + '@ yaxis bar color '+self._barColorY+'\n'
|
||
|
hdr = hdr + '@ yaxis bar linestyle '+self._barStyleY+'\n'
|
||
|
hdr = hdr + '@ yaxis bar linewidth '+self._barWidthY+'\n'
|
||
|
hdr = hdr + '@ yaxis label "'+self._labelY+'"\n'
|
||
|
hdr = hdr + '@ yaxis label layout para\n'
|
||
|
hdr = hdr + '@ yaxis label place auto\n'
|
||
|
hdr = hdr + '@ yaxis label char size '+self._labelSizeY+'\n'
|
||
|
hdr = hdr + '@ yaxis label font '+self._labelFontY+'\n'
|
||
|
hdr = hdr + '@ yaxis label color '+self._labelColorY+'\n'
|
||
|
hdr = hdr + '@ yaxis label place normal\n'
|
||
|
hdr = hdr + '@ yaxis tick on\n'
|
||
|
hdr = hdr + '@ yaxis tick major '+self._tickMajorDeltaY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick minor ticks '+self._tickMinorNumY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick default 6\n'
|
||
|
hdr = hdr + '@ yaxis tick place rounded true\n'
|
||
|
hdr = hdr + '@ yaxis tick in\n'
|
||
|
hdr = hdr + '@ yaxis tick major size '+self._tickMajorSizeY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick major color '+self._tickMajorColorY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick major linewidth '+self._tickMajorWidthY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick major linestyle '+self._tickMajorStyleY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick major grid '+self._tickMajorGridY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick minor color '+self._tickMinorColorY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick minor linewidth '+self._tickMinorWidthY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick minor linestyle '+self._tickMinorStyleY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick minor grid '+self._tickMinorGridY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick minor size '+self._tickMinorSizeY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel '+self._tickLabelOnY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel format general\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel prec '+self._tickLabelPrecY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel formula ""\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel append ""\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel prepend ""\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel angle '+self._tickLabelAngleY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel skip '+self._tickLabelSkipY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel stagger 0\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel place normal\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel offset auto\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel offset 0.000000 , 0.010000\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel start type auto\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel start 0.000000\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel stop type auto\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel stop 0.000000\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel char size '+self._tickLabelSizeY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel font '+self._tickLabelFontY+'\n'
|
||
|
hdr = hdr + '@ yaxis ticklabel color '+self._tickLabelColorY+'\n'
|
||
|
hdr = hdr + '@ yaxis tick place both\n'
|
||
|
hdr = hdr + '@ yaxis tick spec type none\n'
|
||
|
hdr = hdr + '@ altxaxis off\n'
|
||
|
hdr = hdr + '@ altyaxis off\n'
|
||
|
hdr = hdr + '@ legend on\n'
|
||
|
hdr = hdr + '@ legend loctype view\n'
|
||
|
hdr = hdr + '@ legend 0.85, 0.8\n'
|
||
|
hdr = hdr + '@ legend box color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ legend box pattern 1\n'
|
||
|
hdr = hdr + '@ legend box linewidth 1.0\n'
|
||
|
hdr = hdr + '@ legend box linestyle 1\n'
|
||
|
hdr = hdr + '@ legend box fill color '+str(self.getColorNum("white"))+'\n'
|
||
|
hdr = hdr + '@ legend box fill pattern 1\n'
|
||
|
hdr = hdr + '@ legend font '+str(self.getFontNum("Times-Roman"))+'\n'
|
||
|
hdr = hdr + '@ legend char size 1.000000\n'
|
||
|
hdr = hdr + '@ legend color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ legend length 4\n'
|
||
|
hdr = hdr + '@ legend vgap 1\n'
|
||
|
hdr = hdr + '@ legend hgap 1\n'
|
||
|
hdr = hdr + '@ legend invert false\n'
|
||
|
hdr = hdr + '@ frame type 0\n'
|
||
|
hdr = hdr + '@ frame linestyle 1\n'
|
||
|
hdr = hdr + '@ frame linewidth 1.0\n'
|
||
|
hdr = hdr + '@ frame color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ frame pattern 1\n'
|
||
|
hdr = hdr + '@ frame background color '+str(self.getColorNum("white"))+'\n'
|
||
|
hdr = hdr + '@ frame background pattern 0\n'
|
||
|
for i in range(self._numSetsFormat):
|
||
|
hdr = hdr + '@ s'+str(i)+' hidden false\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' type xy\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol size 1.000000\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol pattern 1\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol fill color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol fill pattern 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol linewidth 1.0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol linestyle 1\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol char 65\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol char font '+str(self.getFontNum("Times-Roman"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' symbol skip 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' line type '+self._lineType[i]+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' line linestyle '+self._lineStyle[i]+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' line linewidth '+self._lineWidth[i]+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' line color '+self._lineColor[i]+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' line pattern '+self._linePattern[i]+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' baseline type 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' baseline off\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' dropline off\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' fill type 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' fill rule 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' fill color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' fill pattern 1\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue off\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue type 2\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue char size 1.000000\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue font '+str(self.getFontNum("Times-Roman"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue rot 0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue format general\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue prec 3\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue prepend ""\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue append ""\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' avalue offset 0.000000 , 0.000000\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar on\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar place both\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar color '+str(self.getColorNum("black"))+'\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar pattern 1\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar size 1.000000\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar linewidth 1.0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar linestyle 1\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar riser linewidth 1.0\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar riser linestyle 1\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar riser clip off\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' errorbar riser clip length 0.100000\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' comment ""\n'
|
||
|
hdr = hdr + '@ s'+str(i)+' legend ""\n'
|
||
|
return hdr
|
||
|
|
||
|
def getFontTable(self):
|
||
|
print(" Index Font")
|
||
|
print("===============================")
|
||
|
for i in range(len(self._fonts)):
|
||
|
print(" %2d %s" % (i,self._fontsList[i]))
|
||
|
def getFont(self,num):
|
||
|
"""
|
||
|
Get the font name associated with an index.
|
||
|
"""
|
||
|
if num < len(self._fonts):
|
||
|
return self._fontsList[num]
|
||
|
else:
|
||
|
return 0
|
||
|
def getFontNum(self,font):
|
||
|
return self._fonts[font]
|
||
|
|
||
|
def getColorTable(self):
|
||
|
print(" Index Color RGB")
|
||
|
print("===================================")
|
||
|
for i in range(len(self._colors)):
|
||
|
fmt = " %2d %s"
|
||
|
for j in range(10-len(self._colorsList[i])):
|
||
|
fmt = fmt + " "
|
||
|
fmt = fmt + " %s"
|
||
|
print(fmt % (i,self._colorsList[i],str(self._colors[self._colorsList[i]][1])))
|
||
|
def getColor(self,num):
|
||
|
return self._colorsList[num]
|
||
|
def getColorNum(self,col):
|
||
|
return self._colors[col][0]
|
||
|
def getRGB(self,num):
|
||
|
return self._colors[self.getColor(num)][1]
|
||
|
def getColorRGB(self,col):
|
||
|
return self._colors[col][1]
|
||
|
|
||
|
def getLineStyleTable(self):
|
||
|
print(" Index LineStyle")
|
||
|
print("=======================")
|
||
|
for i in range(len(self._linestylesList)):
|
||
|
print(" %2d %s" % (i,self._linestylesList[i]))
|
||
|
def getLineStyle(self,num):
|
||
|
return self._linestylesList[num]
|
||
|
def getLineStyleNum(self,sty):
|
||
|
return self._linestyles[sty]
|
||
|
|
||
|
def getTypesettingTable(self):
|
||
|
print("Typesetting Control Sequence")
|
||
|
print("===================================================")
|
||
|
for i in range(len(self._typesettingList)):
|
||
|
fmt = "%s"
|
||
|
for j in range(35-len(self._typesettingList[i][0])):
|
||
|
fmt = fmt + " "
|
||
|
fmt = fmt + "%s"
|
||
|
print(fmt % (self._typesettingList[i][0],self._typesettingList[i][1]))
|
||
|
def getLineStyle(self,num):
|
||
|
return self._linestylesList[num]
|
||
|
|
||
|
def greek(self,s):
|
||
|
"""
|
||
|
greek(s):
|
||
|
|
||
|
s = a string
|
||
|
|
||
|
Return Grace encoding to convert the input
|
||
|
string to symbol font, i.e., greek font
|
||
|
"""
|
||
|
return '\\x'+s+'\\f{}'
|
||
|
|
||
|
def big(self,s):
|
||
|
"""
|
||
|
big(s):
|
||
|
|
||
|
s = a string
|
||
|
|
||
|
Return Grace encoding to increase the size of
|
||
|
the input string by a factor of sqrt(sqrt(2))
|
||
|
"""
|
||
|
return '\\+'+s+'\\-'
|
||
|
|
||
|
def sub(self,s):
|
||
|
return '\\s'+s+'\\N'
|
||
|
|
||
|
def sup(self,s):
|
||
|
return '\\S'+s+'\\N'
|
||
|
|
||
|
def font(self,f,s):
|
||
|
return '\\f{'+f+'}'+s+'\\f{}'
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
|
||
|
from GracePlot import GracePlot
|
||
|
|
||
|
# First example, simple
|
||
|
|
||
|
gp = GracePlot()
|
||
|
xdat = [0,1,2,3]
|
||
|
ydat = [0.,10.,20.,30.]
|
||
|
gp.toScreen([[xdat,ydat]])
|
||
|
|
||
|
|
||
|
# Second example, more bells and whistles
|
||
|
|
||
|
ax = range(100); ay = [0.]*100
|
||
|
bx = range(100); by = [0.]*100
|
||
|
import math
|
||
|
for i in range(100):
|
||
|
ax[i] *= 0.02; bx[i] *= 0.02
|
||
|
ay[i] = math.exp(-4.*(ax[i]-1.)**2)*math.cos(ax[i]*2.*math.pi)
|
||
|
by[i] = -1. + 2.*math.exp(-bx[i]**2)
|
||
|
|
||
|
gg = GracePlot()
|
||
|
|
||
|
# Nonsense titles and labels to illustrate options
|
||
|
|
||
|
gg.title(gg.big('V-+')+gg.big(' | ')+'E'+gg.sub('V')+gg.big(' | ')+'Elevation Profile, '+
|
||
|
gg.greek('f')+' = 90'+gg.sup('o'))
|
||
|
gg.subtitle('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
|
||
|
gg.subtitleFont('Symbol')
|
||
|
|
||
|
gg.minX(0)
|
||
|
gg.maxX(2)
|
||
|
gg.deltaX(.2)
|
||
|
gg.minY(-1)
|
||
|
gg.maxY(1)
|
||
|
gg.deltaY(0.2)
|
||
|
gg.thickAxes()
|
||
|
gg.numSetsFormat(2)
|
||
|
gg.thickLines()
|
||
|
gg.thickerLines([1])
|
||
|
gg.setColors(['red','green4'])
|
||
|
gg.setStyles(['solid','long-dash'])
|
||
|
gg.labelX(gg.greek('abcdefghijklmnopqrstuvwxyz'))
|
||
|
gg.labelY(gg.font('Helvetica','La')+'ble'+gg.sub(gg.big(gg.font('Times-Roman','Y'))))
|
||
|
gg.labelFontY('Helvetica-Oblique')
|
||
|
|
||
|
# Options to display to screen and create different file formats
|
||
|
|
||
|
a = [[ax,ay],[bx,by]]
|
||
|
gg.toScreen(a)
|
||
|
gg.toPS(a,"newtest.ps")
|
||
|
gg.toEPS(a,"newtest.eps")
|
||
|
gg.toPDF(a,"newtest.pdf")
|
||
|
|
||
|
|
||
|
|
||
|
# version
|
||
|
# $Id: GracePlot.py,v 1.1 2004/11/03 16:34:49 ericmg Exp $
|
||
|
|
||
|
# End of file
|