0👍
✅
I wrote this some time ago, but it’s been one of the most popular articles on the site, so I guess it works for some.
http://www.protocolostomy.com/2008/10/22/generating-reports-with-charts-using-python-reportlab/
If it’s not enough to get you through, let me know and I’ll come back to help out more later when I have more time.
3👍
skip the canvas and just use the Drawing widget- it will generate the PDF:
d = Drawing(200, 100)
pc = Pie()
pc.x = 65
pc.y = 15
pc.width = 70
pc.height = 70
pc.data = [10,20,30,40,50,60]
pc.labels = ['a','b','c','d','e','f']
pc.slices.strokeWidth=0.5
pc.slices[3].popout = 10
pc.slices[3].strokeWidth = 2
pc.slices[3].strokeDashArray = [2,2]
pc.slices[3].labelRadius = 1.75
pc.slices[3].fontColor = colors.red
d.add(pc)
d.save(formats=['pdf'],outDir=None,fnRoot='C:/test')
- [Django]-Model datetime field validation for fields with auto_now
- [Django]-Django model pre_save Validation in Admin
- [Django]-ImportError: No module named context_processors
1👍
If you need to add the chart to your canvas use d.drawOn(p,0,0)
instead of p.drawPath(d)
- [Django]-Django filter objects based on property in ForeignKey set
- [Django]-How to properly set GEOIP_PATH for Django in OS X?
- [Django]-'User' object has no attribute 'username'
- [Django]-Access to RequestContext in Django template?
- [Django]-Django Model Choice Field: Huge List of choices
0👍
An improved answer from @siguy example, using reportlab 2.7.
from reportlab.lib.colors import red
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.piecharts import Pie
def savePdfGraph(request):
d = Drawing(width=400, height=200)
pc = Pie()
pc.x = 150
pc.y = 50
pc.width = 70
pc.height = 70
pc.data = [10, 20, 30, 40, 50, 60]
pc.labels = ['a', 'b', 'c', 'd', 'e', 'f']
pc.slices.strokeWidth = 0.5
pc.slices[3].popout = 10
pc.slices[3].strokeWidth = 2
pc.slices[3].strokeDashArray = [2, 2]
pc.slices[3].labelRadius = 1.75
pc.slices[3].fontColor = red
d.add(pc)
filename = 'test'
base_dir = '/home/'
path = os.path.join(base_dir, filename)
d.save(formats=['pdf'], outDir=None, fnRoot=path)
return redirect('/')
Output here:
- [Django]-Django – How to add custom error message in Form?
- [Django]-How to use IntegerRangeField in Django template
- [Django]-Number of visitors in Django
- [Django]-Celery 4.0.0 and Class based task workflow
Source:stackexchange.com