Example #1
0
def draw_force_field(x_list, y_list, width, height):
    from pprint import pprint
    '''docstring for draw_force_field'''
    log.info("draw_force_field is working...")
    X = []
    Y = []
    for row in range(0, height):
        one_row_x = []
        one_row_y = []
        for col in range(0, width):
            i = row * width + col
            one_row_x.append(x_list[i])
            one_row_y.append(y_list[i])
        X.append(one_row_x)
        Y.append(one_row_y)
        #X.insert(0, one_row_x)
        #Y.insert(0, one_row_y)

    Q = plt.quiver(X, Y)
    plt.quiverkey(Q, 0.5, 0.92, 2, r'')
    #l,r,b,t = plt.axis()
    #dx, dy = r-l, t-b
    ##axis([l-0.05*dx, r+0.05*dx, b-0.05*dy, t+0.05*dy])
    #plt.xticks(range(0,width +3))
    #plt.yticks(range(0,height + 3))
    plt.title('Attraction Force field')
    plt.savefig("pixel.jpg")
    plt.show()
    return 0
Example #2
0
    def graph_info(self):
        '''docstring for graph_info'''
        self.e_types = ["Link"]
        self.n_types = ["Node", "Link"]
        edges_info = defaultdict(int)
        nodes_info = defaultdict(set)

        for e_type in self.valid_edge_types:
            links = self._get_edges(e_type)
            for link in links:
                nodes = self._nodes_from_edge(link)
                if len(nodes) > 0:
                    if self.valid_edge(link, nodes):
                        #edges_info[link.type_name].add(link.name)
                        edges_info[link.type_name] += 1
                        for i, node in enumerate(nodes):
                            if is_a(node.type_name, "Node"):
                                nodes_info[node.type_name].add(node.name)
        log.info("*******************************edges:")
        for type_name, num in edges_info.iteritems():
            log.info(type_name + ":  " + str(num))
            #pprint(edges)
        log.info("*******************************nodes:")
        for type_name, nodes in nodes_info.iteritems():
            log.info(str(len(nodes)), type_name)
Example #3
0
def draw_vectors(x_list, y_list):
    '''docstring for force_with_spatial()'''
    def x_domain(y_list):
        return range(1, len(y_list) + 1)

    log.info("draw_vectors_2D is working...")
    strengths = []
    angles = []
    yticks = range(0, 15)
    yticks += [100, 200, 300]
    max_ = 0
    i = 0
    plt.subplot(211)
    for x, y in zip(x_list, y_list):
        i += 1
        t = math.sqrt(x**2 + y**2)
        strengths.append(t)
        if t > max_:
            max_ = t
        # draw direction
        plt.quiver(i, t, x, y)
        angles.append(angle_vector(x, y))

    log.info(strengths, "force strengths:")
    X = range(1, len(strengths) + 1)
    circle = mpath.Path.unit_circle()
    verts = np.concatenate([circle.vertices[::-1, ...]])
    codes = np.concatenate([circle.codes])
    circle_path = mpath.Path(verts, codes)
    plt.plot(X, strengths, '--r', marker=circle_path, markersize=5)
    #plt.axis([0, len(x_list) + 3, 0, len(x_list) + 3])
    plt.xticks(range(0, len(x_list) + 3))
    #plt.yticks(yticks)
    plt.xlabel("spatial distance")
    plt.ylabel("force strength")

    plt.subplot(212)
    discrete_differential(angles)
    X = x_domain(angles)
    plt.plot(X, angles, '--r', marker=circle_path, markersize=5)
    #plt.axis([0, len(X) + 3, 0, len(X) + 3])
    plt.xticks(range(0, len(X) + 3))
    plt.xlabel("spatial distance")
    plt.ylabel("direction change ratio")
    plt.show()
    plt.savefig("one_pixel.jpg")
    return 0