Log in

No account? Create an account
Ideas anyone? - LiveJournal Client Discussions — LiveJournal [entries|archive|friends|userinfo]
LiveJournal Client Discussions

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Ideas anyone? [Jan. 25th, 2003|12:00 pm]
LiveJournal Client Discussions


[mood |thoughtfulthoughtful]

Using a free graphing library, I threw together a quick and dirty program for visualising your friends neighbourhood. It screen-scrapes userinfo pages to grab lists of friends, and their friends, and then draws them. It's very much a one-hour prototype right now, I wanted to see how it'd look before investing any real time on things like interface or navigation.

I got this far into the prototype, and sort of lost faith because the whole thing is just too dense to get any real information out of. I could make it a little more readable by changing the colour/opacity/z-order of the nodes based on how well-linked they are, but I have a feeling I need something more before this can be a worthwhile toy.

It's fun, though.

Any ideas on how the data could be better visualised? I thought at first that hiding "unimportant" nodes would help, but the outliers (nodes with a single link to them) are the only things that prevent the graph from totally collapsing in on itself. It's not the edges that are the problem, it's the big, honking mess in the middle.


[User Picture]From: benzado
2003-01-24 06:21 pm (UTC)
Skipping communities might help.

Can the length of the connecting line be proportional to the number of friends of that node. In other words, users with many friends would be farther away than users with only a few. Or, people who run in small circles stay closer together. Maybe that would be geometrically impossible.

Also, using something smaller than the full usernames as labels might make easier to see.

I'd like to play with the source. If you're really too embarrassed to post it, you could email it to me. :-)
(Reply) (Thread)
[User Picture]From: charles
2003-01-26 05:38 pm (UTC)
There's no way to tell from the userinfo page which is a community and which is a regular user. The screen-scraper doesn't return any "friends" when it scrapes a community page, though.

As far as I'm aware (which isn't very far since I haven't looked at the source), the graphing code works by making nodes repulse each other, and the connecting lines try to drag the nodes closer together. The graph stabilises around those two forces. So people who share a lot of friends will end up clumped together.

I don't think there's much point to the graph if you can't see the names. Maybe only directly label "important" nodes (ones with lots of links), and have less important nodes labeled by tool-tip...

I'll release the source in a couple of days.
(Reply) (Parent) (Thread)
From: evan
2003-01-24 06:36 pm (UTC)
We used to have this very feature built-in to LJ on the userinfo pages, but as you found out yourself most people have too many friends for it to look cool.
(Reply) (Thread)
[User Picture]From: skywalker404
2003-01-24 06:41 pm (UTC)
I haven't looked at the code yet, but two thoughts:
  • Use differing colors for nodes (& lines between nodes?) that are friends than for friend-of-friend nodes.
  • Only one line between each node; if they are both listed as friends of each other, then use a diff color, or some other visual method to indicate that.
  • Is there any function that determines the distance each node is supposed to have between the other nodes? If that could be turned up an users with, say, more than 100 [direct] friends, that might help.
  • (Reply) (Thread)
    [User Picture]From: skywalker404
    2003-01-24 06:44 pm (UTC)

    I is college student. *grin*

    Er, 3 things.
    (Reply) (Parent) (Thread)
    From: ex_wantedma
    2003-01-24 07:09 pm (UTC)


    You may try to do a repelling algorthm(where labels try to repel each other and repel a user defined boundry).


    Another possiblility is to do a tree structure, that expands and collapses...

    such as:
      *       *
       \     /
        \   / 
         \ / 
      *      -*-
       \     /
        \   / 
         \ / 

    Sorry my ANSI isn't that good...

    Then you can balance this tree, so that the middle has less nodes coming off of it then the edges,(which has more room to expand).


    Another way you may attempt this is done on this web site:

    Enter and view a chart that is somewhat simular to what your doing...
    hope this helps
    (Reply) (Thread)
    [User Picture]From: mouser
    2003-01-25 07:21 am (UTC)
    Thoughts, not in order:

    1) Make it more Dynamic. From the applet, type in the names to add, thus allowing you to see how, myself and eac are connected to tavalon.

    2) toggle to exclude communities. This one is a must.

    3) toggle to use Friend of list, instead fo Friend list.

    5) Ability to change font size.

    6) Color shift based on distance from a defined node, or number of connections. Or chosen.

    7) Ability to save it, and compare against later.

    4) put up the source, so others can tinker.

    Cool concept.
    (Reply) (Thread)
    (Deleted comment)
    [User Picture]From: charles
    2003-01-26 04:49 pm (UTC)
    Trees wouldn't work. The dataset is a cyclic directed graph, you just can't map that onto a tree.
    (Reply) (Parent) (Thread)
    [User Picture]From: bubblebabble
    2003-01-28 05:28 pm (UTC)

    whiny user desires feature :-)

    The applet first finds a list of my own [the starting user's] friends. Good place to start.

    It then finds full lists of all of my friends. Also wouldn't be useful without this step.

    Would it be possible at this step to NEVER display a friend-of-a-friend that isn't also my friend? What this would give you is a picture of which of your friends know each other/cluster near each other. Without the exponential growth (and associated jumble of labels) of FriendsFriends.

    (Reply) (Thread)
    [User Picture]From: charles
    2003-01-28 07:41 pm (UTC)

    Re: whiny user desires feature :-)

    Version 0.2, to be released in about 24 hours from now, works exactly the way you described, but with the additional feature that you can expand on individuals so you can see (for example) how your friends intersect with someone else's.
    (Reply) (Parent) (Thread)
    [User Picture]From: cleoag
    2003-04-16 10:21 pm (UTC)
    created a while ago :)


    (Reply) (Thread)