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)
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
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
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"]))