示例#1
0
def make_plot():
    plt.figure(figsize=(15, 15), dpi=100)
    plt.grid(False)
    axes = plt.subplot(111, axisbg=(1,1,1))
    axes.minorticks_off()
    plotdata = get_plotdata()
    plotvalues = plotdata.values()
    plotvalues.sort(key=lambda x: -(x['freq']))

    sizes = np.sqrt(np.sqrt([v['freq']-1 for v in plotvalues]))*2
    texts = [v['colorname'] for v in plotvalues]
    xy = np.array([rgb_to_wheel(lab_to_rgb(v['lab'])) for v in plotvalues])
    x_components = xy[:,0]
    y_components = xy[:,1]
    rgb = np.array([v['rgb'] for v in plotvalues])
    #rgba = np.zeros( (rgb.shape[0], rgb.shape[1]+1) )
    #rgba[:,0:3] = rgb
    #rgba[:,3] = 0.8
    axes.scatter(x_components, y_components, s=sizes*2, c=rgb, edgecolors='none')
    #plt.xlim(xmin=-1, xmax=1)
    #plt.ylim(ymin=-1, ymax=1)
    
    for x, y, text, size, color in zip(x_components, y_components, texts, sizes, rgb):
        textcolor='black'
        #print text
        plt.text(x, y, text.decode('utf-8'), size=size/2.0, color=textcolor)
    plt.savefig('concept_colors2.png', dpi=1000)
示例#2
0
def get_plotdata():
    colordata = make_lab_color_data()
    plotdata = {}
    for key, colors in colordata.items():
        if len(colors) > 4:
            lab = component_median(colors)
            rgb = [x/255.0 for x in lab_to_rgb(lab)]
            if key == 'rise': colorname = 'rose'
            else: colorname = key
            plotdata[key] = {
                'colorname': colorname,
                'rgb': rgb,
                'lab': lab,
                'freq': len(colors)
            }
            print key, lab
    return plotdata
示例#3
0
def run_leave_n_out():
    from csc.divisi2 import examples
    import colors
    log.info('Loading ConceptNet matrix')
    sa = examples.spreading_activation()
    log.info('Loading test input')
    train_input, test_input = training_and_test_data()
    log.info('Loading test data')
    test = make_test_data()
    log.info('Building colorizer')
    cmatrix = make_color_matrix()
    colorizer = Colorizer(sa, cmatrix)

    dist_dict = {}
    baseline_dict = {}
    distances = {
        'baseline': [],
        'weighted': [],
        'inter_annotator': [],
    }

    test_concepts = set(test.keys()) & set(sa.row_labels)
    for colorname in test_concepts:
        try:
            labout = tuple(colorizer.lab_color_for_concept(colorname)[:3])
        except TypeError:
            continue


        labact = test[colorname]
        rgbact = lab_to_rgb(labact)
        dist = euclid(labout,labact)
        
        distances['weighted'].append(dist)

        baseline = euclid([50, 0, 0], labact)
        distances['baseline'].append(baseline)
        
        #try:
        #    wnout = tuple(colorizer.lab_color_for_concept_wordnet(colorname)[:3])
        #    wndist = euclid(wnout, labact)
        #    distances['wordnet'].append(wndist)
        #    rgbwnout = lab_to_rgb(wnout)
        #    print colorname, '(wordnet)', rgbact, rgbwnout, str(wndist)
        #except TypeError:
        #    pass

        #try:
        #    prismdata = [rgb_to_lab([color.__r, color.__g, color.__b]) for color in colors.prism(colorname)]
        #    prism_avg = numpy.mean(numpy.array(prismdata), axis=0)
        #    prism_dist = euclid(prism_avg, labact)
        #    distances['nodebox_prism'].append(prism_dist)
        #except ZeroDivisionError:
        #    pass

        inter_annotator = euclid(rgb_to_lab(test_input[colorname][0]), 
                                 labact)
        if inter_annotator == 0:
            inter_annotator = euclid(rgb_to_lab(test_input[colorname][1]), 
                                     labact)
        distances['inter_annotator'].append(inter_annotator)
        
        rgbout = lab_to_rgb(labout)

        print colorname, rgbact, rgbout, str(dist)
    
    totals = {}
    for key, values in distances.items():
        totals[key] = sum(values)/len(values)
    totals['total'] = len(distances['weighted'])
    print totals
    return totals
示例#4
0
 def color_for_text(self, text):
     l,a,b,c = self.lab_color_for_concept(text)
     # hacky fix for dimness
     l *= 1.25
     r, g, b = lab_to_rgb((l,a,b))
     return divisi2.DenseVector([r, g, b, c], OrderedSet(["red", "green", "blue", "colorful"]))