views:

142

answers:

1

Hi guys

I'm using matplotlib at the moment to try and visualise some data I am working on. I'm trying to plot around 6500 points and the line y = x on the same graph but am having some trouble in doing so. I can only seem to get the points to render and not the line itself. I know matplotlib doesn't plot equations as such rather just a set of points so I'm trying to use and identical set of points for x and y co-ordinates to produce the line.

The following is my code

from matplotlib import pyplot
import numpy
from pymongo import *

class Store(object):
    """docstring for Store"""
    def __init__(self):
        super(Store, self).__init__()
        c = Connection()
        ucd = c.ucd
        self.tweets = ucd.tweets

    def fetch(self):
        x = []
        y = []
        for t in self.tweets.find():
            x.append(t['positive'])
            y.append(t['negative'])
        return [x,y]

if __name__ == '__main__':
    c = Store()
    array = c.fetch()
    t = numpy.arange(0., 0.03, 1)

    pyplot.plot(array[0], array[1], 'ro', t, t, 'b--')
    pyplot.show()

Any suggestions would be appreciated,

Patrick

+2  A: 

Correct me if I'm wrong (I'm not a pro at matplotlib), but 't' will simply get the value [0.].

t = numpy.arange(0.,0.03,1)

That means start at 0 and go to 0.03 (not inclusive) with a step size of 1. Resulting in an array containing just 0.

In that case you are simply plotting one point. It takes two to make a line.

Paul
Thanks so much. I just knew it was me doing something stupid. Works beautifully.
Patrick O'Doherty
@Patrick - If this is the answer, why don't you mark it as accepted?
tom10
My bad, I thought I had.
Patrick O'Doherty