Я привел простой пример, который вы можете проверить.Результат может выглядеть следующим образом:
#!/usr/bin/python
from reportlab.graphics.charts.lineplots import LinePlot
from reportlab.graphics.shapes import Drawing
from reportlab.lib import colors
from random import randint
from datetime import date, timedelta
# Generate some testdata
data = [
[(x,randint(90,100)) for x in range(0,2001,100)],
[(x,randint(30,80)) for x in range(0,2001,100)],
[(x,randint(5,20)) for x in range(0,2001,100)],
]
# Create the drawing and the lineplot
drawing = Drawing(400, 200)
lp = LinePlot()
lp.x = 50
lp.y = 50
lp.height = 125
lp.width = 300
lp._inFill = 1
lp.data = data
for i in range(len(data)):
lp.lines[i].strokeColor = colors.toColor('hsl(%s,80%%,40%%)'%(i*60))
# Specify where the labels should be
lp.xValueAxis.valueSteps = [5, 500, 1402, 1988]
# Create a formatter that takes the value and format it however you like.
def formatter(val):
#return val
#return 'x=%s'%val
return (date(2010,1,1) + timedelta(val)).strftime('%Y-%m-%d')
# Use the formatter
lp.xValueAxis.labelTextFormat = formatter
drawing.add(lp)
from reportlab.graphics import renderPDF
renderPDF.drawToFile(drawing, 'example.pdf', 'lineplot with dates')
В программе форматирования есть 2 альтернативных оператора return, с которыми вы можете поиграть, чтобы получить лучшее управление.
Конечно, еслиданные по оси x - это даты, с которых не нужно начинать форматирование, в этом случае вы можете просто указать, где должны быть метки (если вас не устраивает расположение по умолчанию).
Приведенный выше пример заимствует идеи со страницы 105 в документации reportlab .
Удачи:)