I'm trying to open a png file using matplotlib to then add further layers of clusters/graphs on top. A self contained code that shows my problem is the following:
import urllib.request as urllib2
import matplotlib.pyplot as plt
DIRECTORY = "http://commondatastorage.googleapis.com/codeskulptor-assets/"
MAP_URL = DIRECTORY + "data_clustering/USA_Counties.png"
map_file = urllib2.urlopen(MAP_URL)
map_img = plt.imread(map_file)
implot = plt.imshow(map_img)
where I am getting the following error message:
runfile('G:/My Drive/Python/Fundamentals of computing/AT/Application 3/untitled0.py', wdir='G:/My Drive/Python/Fundamentals of computing/AT/Application 3')
Traceback (most recent call last):
File "G:\My Drive\Python\Fundamentals of computing\AT\Application 3\untitled0.py", line 15, in <module>
map_img = plt.imread(map_file)
File "C:\Users\Tomas\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2160, in imread
return matplotlib.image.imread(fname, format)
File "C:\Users\Tomas\anaconda3\lib\site-packages\matplotlib\image.py", line 1560, in imread
with img_open(fname) as image:
File "C:\Users\Tomas\anaconda3\lib\site-packages\PIL\ImageFile.py", line 116, in __init__
self._open()
File "C:\Users\Tomas\anaconda3\lib\site-packages\PIL\PngImagePlugin.py", line 727, in _open
cid, pos, length = self.png.read()
File "C:\Users\Tomas\anaconda3\lib\site-packages\PIL\PngImagePlugin.py", line 176, in read
pos = self.fp.tell()
UnsupportedOperation: seek
Just for a bit of extra information, I am running python on Spyder 5.2.2, within anaconda3. I already tried updating conda, spyder and the pillow package from the Anaconda prompt.
Any ideas why is this happening?
EDIT
I found a work around that involves modifying my code to not use urllib2.urlopen, but to pass the MAP_URL directly to imread, as follows:
# map_file = urllib2.urlopen(MAP_URL)
# map_img = plt.imread(map_file)
map_img = plt.imread(MAP_URL)
I'm still leaving the question because I'd like a bit of clarification on why this is working, since I'm clearly far from an expert with these libraries and packages.
