本文整理汇总了Python中reportlab.graphics.charts.textlabels.Label.setOrigin方法的典型用法代码示例。如果您正苦于以下问题:Python Label.setOrigin方法的具体用法?Python Label.setOrigin怎么用?Python Label.setOrigin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reportlab.graphics.charts.textlabels.Label
的用法示例。
在下文中一共展示了Label.setOrigin方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: draw_travels
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def draw_travels(self):
for p in self.world.packets:
if self.detailed:
txt = p.command()
else:
txt = "(%d) %s" % (p.number, p.description)
last_action = (0,0)
for ts in p.trip:
action = self.packet_actions[ts.action]
if ts.actor not in self.verticals:
self.verticals[ts.actor] = self.verticals[ts.actor.node]
x2,y2 = self.verticals[ts.actor], -ts.time*self.yzoom
if action.sprite:
self.sequence_diagram.add(shapes.Circle(x2, y2,
action.size, fillColor=action.color, strokeWidth=1 ))
if action.travel:
if action.travel_desc:
# self.sequence_diagram.add(shapes.String((last_action[0] + x)/2,(last_action[1]+y)/2, label, fill=colors.black, textAnchor = 'middle'))
x1, y1 = last_action[0], last_action[1]
l = Label()
l.setText(txt)
l.angle = atan2((y2-y1)/2, (x2-x1))*360.0/pi
l.dy = 10
l.setOrigin((x1 + x2)/2,(y1+y2)/2)
self.sequence_diagram.add(l)
#anchor = Paragraph('<a name="diagram%d"/>' %p.number, styles['Normal'])
self.sequence_diagram.add(shapes.Line(last_action[0],last_action[1],x2,y2, strokeColor=colors.black, strokeWidth=1))
self.max_y = min(y2, self.max_y, last_action[1])
last_action = (x2,y2)
示例2: getTalkRect
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def getTalkRect(self, startTime, duration, trackId, text):
"Return shapes for a specific talk"
g = Group()
y_bottom = self.scaleTime(startTime + duration)
y_top = self.scaleTime(startTime)
y_height = y_top - y_bottom
if trackId is None:
#spans all columns
x = self._colLeftEdges[1]
width = self.width - self._colWidths[0]
else:
#trackId is 1-based and these arrays have the margin info in column
#zero, so no need to add 1
x = self._colLeftEdges[trackId]
width = self._colWidths[trackId]
lab = Label()
lab.setText(text)
lab.setOrigin(x + 0.5*width, y_bottom+0.5*y_height)
lab.boxAnchor = 'c'
lab.width = width
lab.height = y_height
lab.fontSize = 6
r = Rect(x, y_bottom, width, y_height, fillColor=colors.cyan)
g.add(r)
g.add(lab)
#now for a label
# would expect to color-code and add text
return g
示例3: draw
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def draw(self):
# general widget bits
w = float(self.length)
h = float(self.height)
g = shapes.Group()
body = shapes.Polygon(
[self.x-0.5*w, self.y-0.5*w,
self.x-0.5*w, self.y+0.5*w,
self.x+0.5*w, self.y],
fillColor=self.fillColor,
strokeColor=self.strokeColor,
strokeWidth=self.strokeWidth)
g.add(body)
if self.label:
b = g.getBounds()
s = Label()
s.setText(self.label)
s.setOrigin(self.x+0.5*w, self.y-h/2+b[3]-b[1]+4)
s.boxAnchor = self.boxAnchor
s.textAnchor = self.textAnchor
s.fontName = 'Helvetica'
s.fontSize = self.fontSize
s.angle = self.labelAngle
g.add(s)
return g
示例4: addScale
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def addScale(drawing, xmap, y, start, end, tickLen=10, dx=3, dy=6,
textAnchor='middle', boxAnchor='s', fontSize=12,
strokeWidth=1, strokeColor=colors.black, scale=1.0, format='%ibp'):
x1 = xmap(start)
x2 = xmap(end)
line = Line(x1+dx,y,x2-dx,y,
strokeWidth=strokeWidth, strokeColor=strokeColor)
drawing.add(line)
leftTick = Line(x1+dx,y-0.5*tickLen,x1+dx,y+0.5*tickLen,
strokeWidth=strokeWidth, strokeColor=strokeColor)
drawing.add(leftTick)
rightTick = Line(x2-dx,y-0.5*tickLen,x2-dx,y+0.5*tickLen,
strokeWidth=strokeWidth, strokeColor=strokeColor)
drawing.add(rightTick)
label = Label()
label.setOrigin(0.5*(x1+x2), y+dy)
distance = float(end-start)/scale
label.setText(format % (distance/scale))
label.fontSize = fontSize
label.textAnchor = textAnchor
label.boxAnchor = boxAnchor
drawing.add(label)
示例5: addChromosomes
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def addChromosomes(drawing, chrNames, chrSizes, xmap, ymap, w=0.1*DPI, fillColor=colors.skyblue, strokeColor=colors.skyblue):
for i,chrom in enumerate(chrNames):
x = xmap(i+1)
y = ymap(chrSizes[chrom])
h = ymap(1)-ymap(chrSizes[chrom])
chromosome = Rect(x,y,w,h, strokeColor=strokeColor, fillColor=fillColor)
drawing.add(chromosome)
topCap = Wedge(x+0.5*w, y+h, 0.5*w, 0, 180, strokeColor=strokeColor, fillColor=fillColor)
bottomCap = Wedge(x+0.5*w, y, 0.5*w, 180, 0, strokeColor=strokeColor, fillColor=fillColor)
drawing.add(topCap)
drawing.add(bottomCap)
label = Label()
label.setOrigin(xmap(i+1)+w/2, ymap(0))
label.boxAnchor = 's'
label.textAnchor = 'middle'
label.dx = 0
label.dy = DPI/10
label.setText(chrom)
label.fontSize = 36
label.fontName = 'Helvetica'
drawing.add(label)
chrLength = Label()
chrLength.setOrigin(xmap(i+1)+w/2, ymap(chrSizes[chrom]))
chrLength.boxAnchor = 'n'
chrLength.textAnchor = 'middle'
chrLength.dx = 0
chrLength.dy = -DPI/10
chrLength.setText('%iMb' % int(chrSizes[chrom]/1e6))
chrLength.fontSize = 24
chrLength.fontName = 'Helvetica'
drawing.add(chrLength)
示例6: addLabel
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def addLabel(drawing, x, y, text, fontName='Helvetica', fontSize=11, dy=0,
angle=0, boxAnchor='sw', textAnchor='start'):
"""Add a label to the drawing.
This interface here is inconsistent in that it requires pixel coords. FIX
This just sets convenient defaults for Label."""
label = Label()
label.setText(text)
label.setOrigin(x, y)
label.fontName = fontName
label.fontSize = fontSize
label.boxAnchor = boxAnchor
label.textAnchor = textAnchor
label.dy = dy
label.angle = angle
drawing.add(label)
示例7: addPointyCompoundFeature
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def addPointyCompoundFeature(drawing, xmap, y, gene,
strokeColor=None, fillColor=colors.blue, intronColor=colors.blue,
glyph=PointyBlock, height=12, utrHeight=6, rise=8,
labeldy=10, fontSize=10, textAnchor='middle', boxAnchor='s'):
"""Adds a pointy compound feature to the drawing. This is typically
several exons joined by zig-zag lines with an arrow showing strand."""
if gene.strand=='+':
x1,x2 = xmap(gene.start), xmap(gene.end)
else:
x2,x1 = xmap(gene.start), xmap(gene.end)
y = y+height/2
y1 = y
line = Line(x1,y1,x2,y1,strokeColor=intronColor)
drawing.add(line)
for exon in gene:
if exon.strand=='+':
x1,x2 = xmap(exon.start), xmap(exon.end)
else:
x2,x1 = xmap(exon.start), xmap(exon.end)
g = glyph()
g.x = x1
g.y = y
if exon.kind.lower()=='utr':
g.height = utrHeight
else:
g.height = height
g.length = x2-x1
g.fillColor = fillColor
if strokeColor:
g.strokeColor = strokeColor
else:
g.strokeColor = fillColor
g.fontSize = fontSize
drawing.add(g)
label = Label()
label.setText(gene.name)
x = 0.5*(gene.start+gene.end)
label.setOrigin(x,y)
label.dy = labeldy
label.textAnchor = textAnchor
label.boxAnchor = boxAnchor
drawing.add(label)
示例8: addAxis
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def addAxis(drawing, xmap, y, strokeWidth=1, minorStrokeWidth=0.5,
tickDir='down', autoTicks=False, nTicks=20, tickLen=5, fontSize=10, nMinorTicks=80,
minorTickLen=2, angle=0, dx=0, dy=-2, textAnchor='middle', boxAnchor=None,
scale=1.0, format='%i'):
"""Add a horizontal axis to the drawing.
To do: Round tick positions
"""
line = Line(xmap.x0, y, xmap.x1, y, strokeWidth=strokeWidth)
drawing.add(line)
if not boxAnchor:
if tickDir=='down':
boxAnchor = 'n'
else:
boxAnchor = 's'
signum = {'up': -1, 'down': 1}[tickDir]
if nTicks>0:
ticks = tick_generator(xmap.start, xmap.end, n=nTicks, convert=int)
for p in ticks:
x = xmap(p)
line = Line(x, y, x, y-signum*tickLen, strokeWidth=strokeWidth)
drawing.add(line)
s = Label()
s.setOrigin(x, y-signum*tickLen)
s.setText(format % (p/scale))
s.dx = dx
s.dy = signum*dy
s.fontName = 'Helvetica'
s.fontSize = fontSize
s.textAnchor = textAnchor
s.boxAnchor = boxAnchor
s.angle = angle
drawing.add(s)
minorticks = tick_generator(xmap.start, xmap.end, n=nMinorTicks, convert=int)
for p in minorticks:
x = xmap(p)
line = Line(x, y, x, y-signum*minorTickLen, strokeWidth=minorStrokeWidth)
drawing.add(line)
示例9: addAxis
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def addAxis(drawing, xmap, y, fontSize=8, tickLen=4, minorTickLen=2,
nTicks=20, strokeWidth=1, minorStrokeWidth=0.5):
line = Line(xmap.x0, y, xmap.x1, y, strokeWidth=strokeWidth)
drawing.add(line)
ticks = tick_generator(xmap.start, xmap.end, n=nTicks, convert=int)
for p in ticks:
x = xmap(p)
line = Line(x, y, x, y-tickLen, strokeWidth=strokeWidth)
drawing.add(line)
s = Label()
s.setOrigin(x, y-tickLen)
s.setText(str(p))
s.fontName = 'Helvetica'
s.fontSize = fontSize
s.textAnchor = 'middle'
s.boxAnchor = 'n'
drawing.add(s)
minorticks = tick_generator(xmap.start, xmap.end, n=50, convert=int)
for p in minorticks:
x = xmap(p)
line = Line(x, y, x, y-minorTickLen, strokeWidth=minorStrokeWidth)
drawing.add(line)
示例10: Drawing
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
lab.setText('Some\nMulti-Line\nLabel')
d.add(lab)
""")
from reportlab.graphics import shapes
from reportlab.graphics.charts.textlabels import Label
d = Drawing(200, 100)
# mark the origin of the label
d.add(Circle(100,90, 5, fillColor=colors.green))
lab = Label()
lab.setOrigin(100,90)
lab.boxAnchor = 'ne'
lab.angle = 45
lab.dx = 0
lab.dy = -20
lab.boxStrokeColor = colors.green
lab.setText('Some\nMulti-Line\nLabel')
d.add(lab)
draw(d, 'Label example')
disc("""
In the drawing above, the label is defined relative to the green blob.
示例11: makeMarker
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
print lp.data
lp.joinedLines = 1
lp.lines.symbol = makeMarker('Circle')
lp.lineLabelFormat = '%2.2f'
lp.strokeColor = colors.black
lp.xValueAxis.valueMin = 0
lp.xValueAxis.valueMax = 5
lp.xValueAxis.labelTextFormat = '%2.0f'
lp.yValueAxis.valueMin = 0
lp.yValueAxis.valueMax = 104
lp.yValueAxis.valueStep = 10
xlbl = Label()
xlbl.setText("No. of Clusters")
xlbl.setOrigin(310, 53)
xlbl1 = Label()
xlbl1.setText("No. Of Clusters Vs Accuracy")
xlbl1.setOrigin(310, 25)
ylbl = Label()
ylbl.setText("Accuracy\n (%)")
ylbl.setOrigin(28, 260)
lp.lines[0].strokeColor = colors.purple
lp.lineLabels[0].strokeColor = colors.purple
d.add(lp)
d.add(xlbl)
d.add(xlbl1)
开发者ID:oommenkm,项目名称:K-Modes-Algorithm-as-a-tool-for-leukemia-microarray-data-Clustering,代码行数:33,代码来源:plot_accuracy_vs_numOfClusters_1_0.py
示例12: makeSummary
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def makeSummary(self, stype):
logger.debug('StartQT4::makeSummary(%s)' % stype)
pinfo = self.imageViews[-1].getSummaryDemographics()
if pinfo is None:
return
reportname = self.imageViews[-1].getReportName()+'.pdf'
filename = QtGui.QFileDialog.getSaveFileName(self, directory=reportname, filter='PDF Files *.pdf(*.pdf);;All Files *(*)')
#filename = QtGui.QFileDialog.getSaveFileName(self, filter='PDF Files *.pdf(*.pdf);;All Files *(*)')
if len(filename) == 0:
return
doc = SimpleDocTemplate(str(filename), pagesize=A4, rightMargin=1.5*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=3*cm)
elements = []
#data = pinfo.items()
for iv in self.imageViews:
vt = iv.getVelocityText()
if stype == 'BOTH' or stype == iv.getViewShortName():
pinfo.append(vt)
t=Table(pinfo, rowHeights=12)
t.setStyle(TableStyle([('BACKGROUND',(1,1),(-2,-2),colors.green),
('TEXTCOLOR',(0,0),(1,-1),colors.black),
('ALIGNMENT', (0,0),(0,-1), 'RIGHT')]))
elements.append(t)
for iv in self.imageViews:
if stype == 'BOTH' or stype == iv.getViewShortName():
drawing = Drawing(400, 280)
cd = iv.getDataPointer()
vt = iv.getVelocityText()
pinfo.append(vt)
#ydata = cd.getCOMYScaled(False, 'mm').tolist()
ydata = cd.getCOMYScaled(True, 'mm').tolist()
xPlaneFit = cd.getYPlaneFit(units='mm', bothAxes=True).tolist()
vdata = cd.getVelocitySlopeScaled(units='mm', bothAxes=True)
gdata = [ydata, xPlaneFit]
if vdata is not None:
gdata.append(vdata.tolist())
title = Label()
title.setOrigin(150, 240)
title.setText(iv.getViewName())
ylabel = Label()
ylabel.setOrigin(0, 100)
ylabel.angle = 90
ylabel.setText("Millimeters")
xlabel = Label()
xlabel.setOrigin(70, 0)
xlabel.setText("Seconds")
lp = LinePlot()
lp.height = 230
lp.width = 400
lp.data = gdata
lp.lines[0].strokeColor = colors.blue
lp.lines[1].strokeColor = colors.red
lp.lines[2].strokeColor = colors.green
#lp.xValueAxis.xLabel = "Seconds"
drawing.add(title)
drawing.add(ylabel)
drawing.add(xlabel)
drawing.add(lp)
elements.append(drawing)
doc.build(elements, onFirstPage=self.pdfHeaderFooter, onLaterPages=self.pdfHeaderFooter)
示例13: draw_hex
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def draw_hex(self):
print 'Reporting Hex'
story = []
for p in self.world.packets:
pl,t = p.build_ps()
XSTART = 0
XDSTART = 210
y = 0.0
XMUL= 100.0
YMUL = 10.0
larg = 16
YDUMP = PAGE_HEIGHT*0.80/YMUL - 10
YDUMP = 0
canvas = shapes.Drawing(500, 100)
# canvas.add(shapes.Rect(0,0, 500, PAGE_HEIGHT, fillColor=colors.yellow))
backcolor=colgen(0.6, 0.8, 1.0)
forecolor=colgen(0.2, 0.5, 0.8)
def hexstr(x):
s = []
for c in x:
s.append("%02x" % ord(c))
return " ".join(s)
my_y = 0
shift = 0
last_x = 0
while t:
bkcol = backcolor.next()
proto,fields = t.pop()
l = Label()
l.setText(proto.name)
l.boxAnchor = 'w'
l.boxStrokeColor = colors.gray
bc = colors.Color(bkcol[0], bkcol[1], bkcol[2] )
l.boxFillColor = bc
l.setOrigin(XSTART, (YDUMP-y)*YMUL)
canvas.add(l)
my_y = y
for fname, fval, fdump in fields:
y += 1.5
col = forecolor.next()
l = Label()
l.boxAnchor = 'w'
l.setText(fname.name)
l.setOrigin(XSTART + (0.1 * XMUL), (YDUMP-y)*YMUL)
canvas.add(l)
if fval is not None:
if len(fval) > 24:
fval = fval[:21]+"..."
else:
fval=""
l = Label()
l.setText(fval)
xlabel, ylabel = XSTART+(1.5*XMUL), (YDUMP-y)*YMUL
l.setOrigin(xlabel, ylabel)
l.boxStrokeWidth = 2
l.boxAnchor = 'e'
canvas.add(l)
first = True
while fdump:
dmp, fdump = fdump[:larg-shift],fdump[larg-shift:]
l = Label()
l.boxAnchor = 'w'
l.fontName = 'Courier'
l.boxFillColor = colors.Color(bkcol[0], bkcol[1], bkcol[2])
l.boxStrokeColor = colors.Color(col[0], col[1], col[2])
l.boxStrokeWidth = 2
xdump, ydump = XDSTART+ last_x * 0.06*XMUL, (YDUMP-my_y)*YMUL
l.setOrigin(xdump, ydump)
h = hexstr(dmp)
l.setText(h)
canvas.add(l)
if first:
link = shapes.Line(xdump, ydump, xlabel, ylabel, strokeColor=colors.Color(col[0], col[1], col[2]), strokeWidth=1)
canvas.add(link)
first = False
shift += len(dmp)
last_x += len(h) +1
if shift >= larg:
shift = 0
last_x = 0
my_y += 2
y += 2
scale = 0.7
canvas.shift(0, y * YMUL*scale)
canvas.height = min(y * YMUL *scale , PAGE_HEIGHT*0.80)
canvas.scale(scale, scale)
# para = Paragraph('<a name="hex%d"/>'%p.number + \
# '<a href="#summary%d">(%d) %s</a>' % (p.number, p.number, p.description), styles['Normal'])
# story.append([[para, Spacer(1,10), canvas]])
para = Paragraph('<a href="#summary%d">(%d) %s</a>' % (p.number, p.number, p.description), styles['Normal'])
story.append([[para, Spacer(1,10), canvas]])
t = Table(story)
t.setStyle(TableStyle([
('INNERGRID', (0,0), (-1,-1), 0.1, colors.black),
('BOX', (0,0), (-1,-1), 0.1, colors.black),
#.........这里部分代码省略.........
示例14: makeMarker
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
print lp.data
lp.joinedLines = 1
lp.lines.symbol = makeMarker('Circle')
lp.lineLabelFormat = '%2.2f'
lp.strokeColor = colors.black
lp.xValueAxis.valueMin = 0
lp.xValueAxis.valueMax = 2100
lp.xValueAxis.labelTextFormat = '%2.0f'
lp.yValueAxis.valueMin = 0
lp.yValueAxis.valueMax = 100
lp.yValueAxis.valueStep = 10
xlbl = Label()
xlbl.setText("No. of Genes")
xlbl.setOrigin(310, 72)
ylbl = Label()
ylbl.setText("Percentage\n (%)")
ylbl.setOrigin(28, 260)
lp.lines[0].strokeColor = colors.darkgreen
lp.lineLabels[0].strokeColor = colors.darkgreen
lp.lines[1].strokeColor = colors.tomato
lp.lineLabels[1].strokeColor = colors.tomato
lp.lines[2].strokeColor = colors.aquamarine
lp.lineLabels[2].strokeColor = colors.aquamarine
lp.lines[3].strokeColor = colors.purple
lp.lineLabels[3].strokeColor = colors.purple
lgnd = Legend()
开发者ID:oommenkm,项目名称:APRIORI-HYBRID-clustering-Algorithm-for-microarray-data,代码行数:33,代码来源:draw_linePlot_1_0.py
示例15: half_year
# 需要导入模块: from reportlab.graphics.charts.textlabels import Label [as 别名]
# 或者: from reportlab.graphics.charts.textlabels.Label import setOrigin [as 别名]
def half_year(title,city, year, startmon):
'''startmon is the 1-indexed month to start the page on'''
reqd, mons = get_months(year, startmon)
LEFTMARGIN = 5
DAYCOLWIDTH = 50
CELLWIDTH = 80
CELLHEIGHT = 19
TOPROWHEIGHT = 18
WIDTH = LEFTMARGIN + DAYCOLWIDTH + CELLWIDTH*6
HEIGHT = reqd * CELLHEIGHT + TOPROWHEIGHT
d = shapes.Drawing(WIDTH, HEIGHT)
lab = Label()
lab.setOrigin(LEFTMARGIN,HEIGHT)
lab.boxAnchor = 'nw'
lab.setText(title)
lab.fontName = 'Times-Bold'
d.add(lab)
# Month headings
for i in range(6):
x = LEFTMARGIN + i*CELLWIDTH + DAYCOLWIDTH + CELLWIDTH/2
month_name = calendar.month_abbr[i + startmon]
d.add(shapes.String(x, HEIGHT-14, month_name,
fontSize=14, fontName='Times-Bold', textAnchor='middle'))
# Day row headings
for i in range(reqd):
y = HEIGHT - i*CELLHEIGHT - TOPROWHEIGHT
weekday_name = calendar.day_abbr[i%7]
d.add(shapes.String(LEFTMARGIN + 10, y-14, weekday_name,
fontSize=14))
# Draw the day cells, for each month
for j in range(6):
x = LEFTMARGIN + j*CELLWIDTH + DAYCOLWIDTH
# for each day
for i in range(reqd):
if i >= len(mons[j]) or not mons[j][i]:
continue
y = HEIGHT - i*CELLHEIGHT - TOPROWHEIGHT
# cells for each day, light grey background if weekend
weekend = i%7 > 4
lightgrey = colors.HexColor(0xD0B090)
color = weekend and lightgrey or colors.white
# Now we have (x, y, color) for (year, month=j+startmon, day=mons[j][i])
# Get the ephemerides for the date
date = datetime.datetime(year, j+startmon, mons[j][i])
(sunrise, sunset, moon_phase, moon_fm) = ephem3.ephem_one_day(city, date)
# Insert the date cell at x, y
d.add(shapes.Rect(x, y, CELLWIDTH, -CELLHEIGHT, fillColor=color))
d.add(shapes.String(x+1, y-10, str(mons[j][i]), fontSize=10))
green = colors.HexColor(0x207020)
# Insert the moon phase
if moon_fm:
d.add(shapes.String(x+15, y-10, moon_fm, fontSize=8, fillColor=green))
# for each day
# for each month
return d