<div dir="ltr">There is some work in this direction already (<a href="https://github.com/matplotlib/matplotlib/pull/4063">https://github.com/matplotlib/matplotlib/pull/4063</a>).<div><br></div><div>More generally, I was thinking about this problem earlier today!  One of the things that bokeh does really will is broadcast all the things.  Because we have a huge code base I am biased towards decorators and higher-level functions to solve these sorts of things.  Would a function that looks like </div><div><br></div><div>def broadcast_all_the_things(func, *args, static_kwargs=None, **kwargs):<br></div><div><span style="line-height:1.5;font-size:13.1999998092651px">        kwarg_cycler = map(add, cycler(k, v) for k, v in kwargs)</span><br></div><div>        ret = []</div><div>        if static_kwargs is None:</div><div>            static_kwargs = {}</div><div>        for arg, kwarg in zip(zip(args), kwarg_cycler):</div><div>            total_kwargs = {**kwarg_cycler, **static_kwargs}  # this works in 3.5!</div><div>            ret.append(func(*arg, **total_kwargs))</div><div>        return ret</div><div><br></div><div>be useful / an acceptable solution?</div><div><br></div><div>The call would look something like:</div><div><br></div><div>broadcast_all_the_things(ax.text, x_vec, y_vec, s_vec, fontsize=font_size_vec, static_kwargs={'color':'r'})</div><div><br></div><div>There clearly needs to be a bit more thought put into this (like to support automatic unpacking from a data kwarg), but I like the rough idea.  It might also make sense to provide a decorator to make easy to provide `bulk_*` functions in the mpl name spaces.</div><div><br></div><div>Tom</div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 12, 2015 at 9:02 PM Brendan Barnwell <<a href="mailto:brenbarn@brenbarn.net">brenbarn@brenbarn.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">        This is something that I constantly wish for and keep having to hack<br>
around when I remember there's nothing to do it.  Or is there?  Am I<br>
missing something?<br>
<br>
        What I want is the ability to provide a vector of x, y, and text, so<br>
that *with a single call* I can display specified bits of text at a<br>
specified points.<br>
<br>
        Currently text() only puts a single text at a single point, so to plot<br>
multiple texts you have to call it in a loop.  This is especially<br>
annoying because, when you have everything in a pandas DataFrame, the<br>
points and text are often already aligned as separate columns.  I'd like<br>
to be able to do pyplot.multitext(df.x, df.y, df.label) or whatever and<br>
just have it work.  Better yet, just be able to pass an extra<br>
"pointlabel" argument directly to scatter, which would specify a<br>
sequence of labels, one for each point.  The labels could then be turned<br>
off with some method on the scatter artist (and perhaps a shortcut<br>
pyplot method as well).<br>
<br>
        I seem to recall there are some performance issues with plotting many<br>
different Text objects, but that doesn't seem reason enough in itself<br>
not to provide this, since lots of things can cause performance issues<br>
with large datasetrs.  Does anyone else think this would be worth adding?<br>
<br>
-- Brendan Barnwell<br>
"Do not follow where the path may lead. Go, instead, where there is no<br>
path, and leave a trail."<br>
_______________________________________________<br>
Matplotlib-users mailing list<br>
<a href="mailto:Matplotlib-users@python.org" target="_blank">Matplotlib-users@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/matplotlib-users" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/matplotlib-users</a><br>
</blockquote></div>