J'utilise Plotly offline pour générer un graphique en python.
Selon la documentation ci-dessous,
https://plot.ly/python/offline/
Voici mon code, qui génère parfaitement le fichier C: /tmp/test_plot.html.
import plotly.offline as offline
offline.init_notebook_mode()
offline.plot({'data': [{'y': [4, 2, 3, 4]}],
'layout': {'title': 'Test Plot',
'font': dict(family='Comic Sans MS', size=16)}},
auto_open=False, filename='C:/tmp/test_plot')
Comment puis-je enregistrer ce graphique en png au lieu de html?
La méthode offline.plot
possède les attributs image='png
et image_filename='image_file_name'
pour enregistrer le fichier sous la forme png
.
offline.plot({'data': [{'y': [4, 2, 3, 4]}],
'layout': {'title': 'Test Plot',
'font': dict(family='Comic Sans MS', size=16)}},
auto_open=True, image = 'png', image_filename='plot_image',
output_type='file', image_width=800, image_height=600,
filename='temp-plot.html', validate=False)
Voir plus de détails dans offline.py
ou en ligne à plotly
.
Toutefois, étant donné que l'image de sortie est liée à HTML, elle s'ouvre dans le navigateur et demande l'autorisation de sauvegarder le fichier image. Vous pouvez désactiver cela dans les paramètres de votre navigateur.
Alternativement, Vous voudrez peut-être regarder complotement la conversion matplotlib en utilisant plot_mpl
.
L'exemple suivant est tiré de offline.py
from plotly.offline import init_notebook_mode, plot_mpl
import matplotlib.pyplot as plt
init_notebook_mode()
fig = plt.figure()
x = [10, 15, 20, 25, 30]
y = [100, 250, 200, 150, 300]
plt.plot(x, y, "o")
plot_mpl(fig)
# If you want to to download an image of the figure as well
plot_mpl(fig, image='png')
Vous pouvez automatiser PhantomJS pour enregistrer une capture d'écran avec exactement la même largeur et la même hauteur que l'image d'origine lors du téléchargement en ouvrant le navigateur.
Voici le code:
import plotly.offline as offline
from Selenium import webdriver
offline.plot({'data': [{'y': [4, 2, 3, 4]}],
'layout': {'title': 'Test Plot',
'font': dict(size=12)}},
image='svg', auto_open=False, image_width=1000, image_height=500)
driver = webdriver.PhantomJS(executable_path="phantomjs.exe")
driver.set_window_size(1000, 500)
driver.get('temp-plot.html')
driver.save_screenshot('my_plot.png')
#Use this, if you want a to embed this .png in a HTML file
#bs_img = driver.get_screenshot_as_base64()
Mise à jour rapide: depuis la version 3.2.0 de plotly.py, il est maintenant possible d'exporter par programmation des images sous forme d'images statiques en mode totalement déconnecté.
Cela a été accompli en intégrant le projet orca dans plotly.py. Consultez le message d'annonce pour plus de détails.