简体   繁体   中英

Python-Pie chart in reportlabs

I'm referring this link for generation of Pie Chart. In this the colors are pre-defined for each data, ie 10 colors for 10 data points. What if I have 11 data points and then there will be no color for that 11th data point. I want something dynamic which should automatically pick a color by itself and plot it on the pie.

I found this link and this link , but the colors over here are not catchy and not at all good.

Can someone please brief me about how to get catchy colors in pie graph?

Thanks

You can also provide from reportlab.lib.colors import Color like:

Color(red=0, green=0, blue=1, alpha=1) # gives blue
Color(red=1, green=0, blue=0, alpha=1) # gives red

It's easier to manage those arguments than Hex's.
So you could provide a dynamicaly generated list of Color instances. You could yield an iterator that will generate your 'Catchy' colors. I don't think I can define your 'catchyness' for you better than your self :)

I know it's kind of late to be answering, but in case someone else has the same problem, here is what worked for me:

At the start of the code you write:

from reportlab.lib.colors import HexColor
pdf_chart_colors = [
    HexColor("#0000e5"),
    HexColor("#1f1feb"),
    HexColor("#5757f0"),
    HexColor("#8f8ff5"),
    HexColor("#c7c7fa"),
    HexColor("#f5c2c2"),
    HexColor("#eb8585"),
    HexColor("#e04747"),
    HexColor("#d60a0a"),
    HexColor("#cc0000"),
    HexColor("#ff0000"),
    ]

You can change the color codes to get any color you like, some examples: http://www.creativecolorschemes.com/resources/free-color-schemes/beautiful-color-scheme.shtml

And when generating the pie chart you only need to add two lines at the end:

def piechart(Values, Names):        
    d = Drawing(100, 125)
    cht = Pie()
    ...
    n = len(cht.data)
    setItems(n,cht.slices,'fillColor',pdf_chart_colors)

Where setItems has been previously defined as:

def setItems(n, obj, attr, values):
m = len(values)
i = m // n
for j in xrange(n):
    setattr(obj[j],attr,values[j*i % m])

Use this link (last pie chart example) for extra ereference: http://m.blog.csdn.net/blog/wdt3385/10142163

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM