загрузить выходной график matplotlib в облачное хранилище из флакона python - PullRequest
0 голосов
/ 27 июня 2018

Я запускаю приложение фляги на Python в среде гибкого движка приложений . Я хочу загрузить выходное изображение matplotlib непосредственно в облачное хранилище Google. Есть какой-либо способ сделать это? Ниже мой код. Как мне действовать дальше?

x = data
# the histogram of the data
n, bins, patches = plt.hist(x, 25, normed=1, facecolor='green', alpha=0.75)
# add a 'best fit' line
y = mlab.normpdf( bins, mu, sigma)
l = plt.plot(bins, y, 'r--', linewidth=1)

plt.xlabel('X-Axis')
plt.ylabel('Probability')
plt.title(r'Histogram ')
plt.grid(True)
plt.savefig('2.png')

так есть ли способ загрузить гистограмму в облачное хранилище после / без "plt.savefig ('2.png')"? Благодарю. :)

1 Ответ

0 голосов
/ 06 ноября 2018

Прежде всего, вам нужно установить клиент облачного хранилища Google для Python через pip install google-cloud-storage. Затем импортируйте его в свой код.

Затем вы можете создать буфер, в котором вы временно сохраните выходные данные метода savefig Matplotlib перед загрузкой этого буфера в облачное хранилище Google с помощью метода upload_from_string в blob.

Вот полный пример использования вашего кода:

import io
from google.cloud import storage

client = storage.Client(project='your-gcp-project-id')
bucket = client.bucket('your-gcs-bucket-name')
blob = bucket.blob('your-filename.png')

x = data
# the histogram of the data
n, bins, patches = plt.hist(x, 25, normed=1, facecolor='green', alpha=0.75)
# add a 'best fit' line
y = mlab.normpdf( bins, mu, sigma)
l = plt.plot(bins, y, 'r--', linewidth=1)

plt.xlabel('X-Axis')
plt.ylabel('Probability')
plt.title(r'Histogram ')
plt.grid(True)

# temporarily save image to buffer
buf = io.BytesIO()
plt.savefig(buf, format='png')

# upload buffer contents to gcs
blob.upload_from_string(
    buf.getvalue(),
    content_type='image/png')

buf.close()

# gcs url to uploaded matplotlib image
url = blob.public_url
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...