Adding a small image / image to a large graph in Matplotlib / Python

I have a large graph that I generate in matplotlib. I would like to add a few icons to this graph in specific (x, y) coordinates. I am wondering if there is a way to do this in matplotlib

thanks

+4
source share
3 answers

It is definitely possible. Here is the start:

import matplotlib, scipy fig = matplotlib.figure() ax = fig.add_axes([0.1,0.1,0.8,0.8]) axicon = fig.add_axes([0.4,0.4,0.1,0.1]) ax.plot(range(5), [4,2,3,5,1]) axicon.imshow(scipy.randn(100,100)) axicon.set_xticks([]) axicon.set_yticks([]) fig.show() 

Icon Overlay http://up.stevetjoa.com/iconoverlap.png

In this example, the position of the icon was not defined in terms of graphs (x, y); maybe someone can help with this. However, I hope this example is useful.

+6
source

See the dolphin example - initially a joke , but it shows how to add vector graphics to graphics in different coordinates.

+1
source

Many years late, but for future reference.
I found that adding AnnotationBbox with OffsetImage in it helped. eg.

 #!/usr/bin/env python import matplotlib matplotlib.use('WXAgg') import matplotlib.pyplot as plt from matplotlib.offsetbox import (OffsetImage,AnnotationBbox) from matplotlib.cbook import get_sample_data # The slices will be ordered and plotted counter-clockwise. labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' sizes = [15, 30, 45, 10] colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] explode = (0.1, 0, 0, 0) # explode a slice if required fig, ax = plt.subplots() ax.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True) #Full path name to your image fn = get_sample_data("/home/rolf/bandwidth/bandwidth.png", asfileobj=False) arr_img = plt.imread(fn, format='png') imagebox = OffsetImage(arr_img, zoom=1.2) imagebox.image.axes = ax xy = [0.75, 0.95] ab = AnnotationBbox(imagebox, xy, xybox=(120., -10.), xycoords='data', boxcoords="offset points", pad=0.5, ) ax.add_artist(ab) # Set aspect ratio to be equal so that pie is drawn as a circle. plt.axis('equal') plt.show() 

Move the image within the graph using the xy and xybox .

Further reading that may be helpful:
http://matplotlib.org/examples/pylab_examples/demo_annotation_box.html https://developer.ibm.com/clouddataservices/2016/10/06/your-own-weather-forecast-in-a-python-notebook/

+1
source

Source: https://habr.com/ru/post/955843/


All Articles