Пусть следующий макет pandas.DataFrame:Отображение сетки JPG изображений в Python
import pandas as pd
Cat=pd.DataFrame(({'RA' :[230.82102945, 173.65985309999999, 173.66313018,
173.84698746999999, 189.96874310999999,
170.20006370999999, 170.20416528000001,
170.16438034000001, 170.24896294000001,
189.84348857000001, 212.74040604000001,
212.68784378000001, 154.36278941,
154.40930130000001, 154.41919107000001],
'Dec': [-1.0481932199999999, 0.18865839000000001, 0.1247615,
0.090550759999999994, 0.12548559000000001,
0.46857110000000002, 0.45924195000000001,
0.45747362000000003, 0.53422636000000001, 0.46023247,
1.03574006, 1.04634373, -0.49560479000000002,
-0.45308465999999997, -0.48165697000000002],
'Morph':['Ei', 'Er', 'Sc', 'Er', 'Sb', 'Ser', 'Er', 'Ser',
'Sc', 'Ec', 'Sb', 'Sb', 'Ser', 'Ei(o)', 'Ei(o)']}))
Я хочу, чтобы отобразить сетку изображений из Интернета в записной книжке Jupyter. Этими изображениями являются галактики из SDSS, координаты которых находятся в моем DataFrame. Это jpg. Мне не нужно хранить их на диске, но это единственный способ, который я нашел. Я только в состоянии отображать их в колонке, и я использую печати для подписи, таким образом:
import urllib
from IPython.display import Image
from IPython.display import display
from astropy import units as u
impix = 10
imsize = 0.1*u.arcmin
cutoutbaseurl = 'http://skyservice.pha.jhu.edu/DR12/ImgCutout/getjpeg.aspx'
for i in range(16):
query_string = urllib.urlencode(dict(ra=Cat.iloc[i]['RA'],
dec=Cat.iloc[i]['Dec'],
width=impix, height=impix,
scale=imsize.to(u.arcsec).value/impix))
url = cutoutbaseurl + '?' + query_string
urllib.urlretrieve(url, '%i.jpg'%i)
print Cat.iloc[i]['Morph']
x = Image(filename='%i.jpg'%i, height=20*impix, width=20*impix))
display(x)
Это производит следующий вывод:
Я хотел бы показать это на сетке 4x4 (с метками). Я попытался вставить что-то вроде plt.subplot(441+i)
перед отображением, но это не сработает. Более того, если можно не хранить изображения на диске, это было бы прекрасно.
спасибо.
Относительно файла на диске, то я пробовал 'Ио импортировать BytesIO my_url = urllib.urlopen (URL) х = Image (BytesIO (my_url.read()), высота = 20 * impix , width = 20 * impix) дисплей (x) ', но он не работает. – Matt
К сожалению, ваш пример не запускается. 'u' не определено. Отправьте пример фактического запуска. Также кажется, что вы пытаетесь использовать Python 2.x вместо 3.x - это требование или просто то, что у вас есть? –
Извините, я забыл 'от единиц импорта атрофии как u'. Это отредактировано. Я довольно новичок, я использую 3.x, потому что он казался более «стабильным», чем 2,7, мои Jupyter, конфиги, модули модулей ..., я полагаю, соответственно. Если это можно решить в 2.7, это здорово, иначе я могу подумать о переключении своего кода (я немного потерял эту вещь с двумя версиями). – Matt