[Matplotlib-users] Removing text from a figure
Does anyone know if the following error message is a matplotlib bug or is it me making a mistake? Is there an correct/alternative way to remove (or replace) text? Thank you, Raphael from matplotlib.figure import Figure fig = Figure() caption = fig.suptitle("test") caption.remove() Traceback (most recent call last): File "", line 1, in caption.remove() File "C:\Programme\Python27\lib\site-packages\matplotlib\artist.py", line 134, in remove raise NotImplementedError('cannot remove artist') NotImplementedError: cannot remove artist -- View this message in context: http://matplotlib.1069221.n5.nabble.com/Removing-text-from-a-figure-tp40424.html Sent from the matplotlib - users mailing list archive at Nabble.com. -- Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Removing text from a figure
My temporary solution is to clear the figure via clf() and to recreate the plot without the elements I do not want any more. -- View this message in context: http://matplotlib.1069221.n5.nabble.com/Removing-text-from-a-figure-tp40424p40427.html Sent from the matplotlib - users mailing list archive at Nabble.com. -- Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] help: matplotlib.sankey: linking flows from multiple prior sub-diagrams and crossing flows
Hi List, I wonder whether anybody has tried to draw the following idea with a sankey diagram (but if you are aware of another way to draw the following, I am open to suggestions): I have several systems which are all linked so that part of the outputs of each of the systems becomes part of the inputs of each of the others. So, each system exchanges 2 flows with each of the other systems (an output which becomes the other's input and vice-verse). This implies that some of the flows will have to cross. I tried many combinations to connect the flows to each other but I did not manage to connect them all. In a 3 systems diagram, I managed at best to connect 2 single flows: one from the 2nd diagram to the 1st and one from the third to the second. The problem is that, no matter which order I gave to the flows, I had never been able to connect both input and output between any sub-diagram (maybe because matplotlib.sankey does not automatically connect the flows when they have to cross?) you can find the diagrams that I managed to draw here: https://dl.dropbox.com/u/45960790/World/sankeys.7z I would appreciate any help to connect all the remaining flows. I think that this could be solved if it was allowed to explicitly state more than one flow to connect but I have no clue whether it is possible to implement: Currently (as I have understood it), one can only specify a single "prior" diagram and a single flow to be connected. So it would be nice to: -- declare several flows to "connect" to the "prior" diagram; and also -- declare several "prior" diagrams for which several flows could be connected. I guess this would be the easiest way to connect all flows from the sub-diagrams. Of course, this presupposes that crossing the flows is allowed. In case it is not, can matplotlib.sankey be hacked to allow that? Thanks a lot, Aleix -- Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] Draw paths on map using matplotlib-basemap
Thank you for your ideas, I leave the correct code to plot trajectories of any object, in my case I have drawn the trajectories of convective storms. 1. # --- Construimos el mapa --- 2. 3. import numpy as np 4. from mpl_toolkits.basemap import Basemap 5. import matplotlib.pyplot as plt 6. from PIL import * 7. fig = plt.figure(figsize=(12,12)) 8. 9. ax = fig.add_axes([0.1,0.1,0.8,0.8]) 10. 11. m = Basemap(projection='cyl', llcrnrlat=12, urcrnrlat=35,llcrnrlon=-120, urcrnrlon=-80, resolution='c', area_thresh=1000.) 12. 13. m.bluemarble() 14. m.drawcoastlines(linewidth=0.5) 15. m.drawcountries(linewidth=0.5) 16. m.drawstates(linewidth=0.5) 17. 18. # --- Dibujamos paralelos y meridianos --- 19. 20. m.drawparallels(np.arange(10.,35.,5.),labels=[1,0,0,1]) 21. m.drawmeridians(np.arange(-120.,-80.,5.),labels=[1,0,0,1]) 22. m.drawmapboundary(fill_color='aqua') 23. 24. # --- Abrimos el archivo que contiene los datos --- 25. 26. import pandas as pd 27. 28. df = pd.read_csv('scm-2004.csv') 29. for evento, group in df.groupby(['evento']): 30. latitude = group.lat.values 31. longitude = group.lon.values 32. x,y = m(longitude, latitude) 33. plt.plot(x,y,'y-',linewidth=2 ) 34. plt.xlabel('Longitud') 35. plt.ylabel('Latitud') 36. plt.title('Trayectorias de Sistemas Convectivos 2004') 37. 38. 39. 40. plt.savefig('track-2004.jpg', dpi=100) With the above code, I get the desired figure. 60 paths drawn on the map of México. I have only one last question: how could indicate the start of each of the storms, someone has an idea how I can do this? -- Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Removing text from a figure
On Tue, Feb 12, 2013 at 5:09 AM, mameghani wrote: > Does anyone know if the following error message is a matplotlib bug or is > it > me making a mistake? > Is there an correct/alternative way to remove (or replace) text? Thank you, > Raphael > > from matplotlib.figure import Figure > fig = Figure() > caption = fig.suptitle("test") > caption.remove() > > Traceback (most recent call last): > File "", line 1, in > caption.remove() > File "C:\Programme\Python27\lib\site-packages\matplotlib\artist.py", > line 134, in remove > raise NotImplementedError('cannot remove artist') > NotImplementedError: cannot remove artist > > > Heh, strange... it looks like most artist objects don't actually define a remove function. I suppose you could do "fig._suptitle = None" in the meantime, though. Ben Root -- Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users