From: Joerg Lehmann <joergl@us...>  20050528 09:18:45

Hi Dani, On 27.05.05, Dani Marti wrote: > I am using PyX to represent a vector field in 2D. > I start from a data file with four columns, > > x y dx dy > . . . . > . . . . > > >From this data I'd like to plot a vector with components (dx,dy) > at point (x,y). This is matlab's "quiver" function convention (I should > stick to this). I store each row of the data file as an element of a > list, and then use it as the input for graph.data.list: > > g.plot(graph.data.list(list_vectors, x = 1, y = 2, size = 3, angle = 4), > [graph.style.arrow()]) > > Everything is fine, except for two things: > >  the huge arrow heads (the longer the vector, the bigger the > head). I'd like to have always the same size for the heads > (preferably small, just to see to what direction the vector > points to). I just had a look in the code and saw that this is indeed the case, though I'm not sure why. >  It is not the tail of the vector which is at (x,y), but the > midpoint of it, and this is not what I want. Does > anyone have any idea of how to solve this in a simple way? You could just define a new style deriving from the arrow style and replace the drawpoint function to do what you want. Just have a look at the code (in pyx/graph/style.py), it's pretty straightforward. > Is there a more convenient or simpler way of plotting 2D vector > fields with PyX? > > By the way, could someone show an example of arrowattr=[], please? I > didn't manage to find examples in the documentation. You could for instance use arrowattrs=[color.rgb.red] to get red arrow heads, etc. HTH, Jörg 