From: Ted D. <ted...@jp...> - 2005-02-11 21:25:07
|
Inlined comments below... At 12:41 PM 2/11/2005, John Hunter wrote: > >>>>> "Ted" == Ted Drain <ted...@jp...> writes: > > Ted> Is there an easy way to plot multiple collections of points > Ted> connected by a line and have only a single legend entry show > Ted> up? It would also be nice if any modifications to that entry > Ted> (marker, color, etc) would affect all the line segments. > >Not 100% sure what you are after here. You can control which lines >and patches get passed to the legend by explicitly passing them (as >opposed to using the autolegend capabilities). Eg > > ax.legend((l1, p1), ('A line, 'A patch') > >Also, have you looked into the LineCollection class -- this sounds >like it would support some of what you are describing. Perhaps if you >explain a bit more. What's happening here is that we have a plot that's a map of the earth going from -180 to 180 longitude and pole to pole. A spacecraft ground trajectory goes around and around so when it hit's the +180 longitude, it needs to wrap around to -180. We want this to be a line plot. If you just put in the x,y coordinates as a line plot, you get a long line segment when it goes from say: (175,20) -> (-175,30) What we've done in the past is to use a heuristic to detect this case. For example, I might say if the delta x is greater than 90% of the total longitude, it's a wrap around case. In that case, I do linear interpolation to get a point at the edge of the map (in this case 180, 25), insert this point, and split the line into two pieces at this point. For example, if I have a data set that looks like this: [155,2] [165,4] [175,6] [-175,8] [-165,10] [-155,12] I really need this data to be drawn as two separate lines: [155,2] [165,4] [175,6] [180,7] and [-180,7] [-175,8] [-165,10] [-155,12] Ideally these two segments should be treated as a single line wherever applicable (legend, style, etc). > Ted> Ted PS: we also need some way to draw only the n'th marker in > Ted> a line plot. We plot a lot of trajectories where time is > Ted> progressing along the line so it's useful to generate the > Ted> plot using 1 minute data (for example) and then have a marker > Ted> be displayed every 60'th point. > >Look at subplot(211) in examples/subplot_demo.py. There a line is >plotted with one temporal resolution, and markers are placed along the >line at subsampled points. Basically two lines are added with >different sampling frequencies. > >Does this suffice? I'd probably label this as a "mostly acceptable work-around" since it requires generating two data arrays. In my case, the data is expensive to compute so we'd probably have to generate a second array by selectively copying points from the first array which is kind of annoying. I was hoping for a keyword that said how often to generate the markers for an existing line (with the default as one of course). Probably not a huge deal though. >JDH Ted Drain Jet Propulsion Laboratory ted...@jp... |