lundi 13 juin 2016

How to give each Category a color?

We have a code to draw circles on the Location on the map with the name of each category. Now the circles and text are one color. How do we get them in different color's by category? Example: Category Garden: Blue, Category Stone: Grey.

So far the code:

size(1500,800)
background(1)
nofill()
stroke('#f91')
pen(.2)
fill('#f91', 0.05)
rotate(90)

font("Avenir", "bold", 10)
align('left')


def mapValue(value, fromMin, fromMax, toMin, toMax):
    # Figure out how 'wide' each range is
    fromSpan = fromMax - fromMin
    toSpan = toMax - toMin

    # Convert the from range into a 0-1 range (float)
    valueScaled = float(value - fromMin) / float(fromSpan)

    # Convert the 0-1 range into a value in the to range.
    return toMin + (valueScaled * toSpan)

def xOfDot(lon):
    return mapValue(lon, -100, 100, 0, WIDTH)

def yOfDot(lat):
    return mapValue(lat, -90, 90, HEIGHT, 0)


with open('theft-alerts.json', 'r') as inputFile:
    data = json.load(inputFile)

print len(data)

artworksPerCity = {}

for stolenArt in data:
    if stolenArt.has_key('Category'):
        city = stolenArt['Category']
        if stolenArt.has_key('nItemsStolen'):
            numbersStolen = int(stolenArt['nItemsStolen'])
            if artworksPerCity.has_key(city):
                # Adjust the value stored for this city
                artworksPerCity[city] = artworksPerCity[city] + numbersStolen
            else:
                # Create new key with new value
                artworksPerCity[city] = numbersStolen
            # Draw circle on the map
            radius = artworksPerCity[city] /2
            x = xOfDot(stolenArt['Lon'])
            y = yOfDot(stolenArt['Lat'])
            arc(x, y, radius) 
            text(city, x, y)

print artworksPerCity

Aucun commentaire:

Enregistrer un commentaire