plotly怎么存为HTML文件,如何使用plotly指定保存图像的目录py.image.另存为

为了将文件保存在特定的文件路径中,您需要使用filename参数。在import plotly.plotly as py

help(py.image)| Helper functions wrapped around plotly's static image generation api.

|

| Class methods defined here:

| save_as(figure_or_data, filename, format=None, width=None, height=None, scale=None) from builtins.type

| Save a image of the plot described by `figure_or_data` locally as

| `filename`.

|

| Valid image formats are 'png', 'svg', 'jpeg', and 'pdf'.

| The format is taken as the extension of the filename or as the

| supplied format.

|

| positional arguments:

| - figure_or_data: The figure dict-like or data list-like object that

| describes a plotly figure.

| Same argument used in `py.plot`, `py.iplot`,

| see https://plot.ly/python for examples

| - filename: The filepath to save the image to

| - format: 'png', 'svg', 'jpeg', 'pdf'

| - width: output width

| - height: output height

| - scale: Increase the resolution of the image by `scale` amount

| Only valid for PNG and JPEG images.

使用带有路径的文件名(脱机):However, this results in a HTML file that's opened in a new tab of thebrowser. The image is saved to the 'Downloads' folder, and it's notpossible to specify the path at which the image should be saved.

^{pr2}$

因此,您将在指定的文件夹(下载文件夹中的图像)中保存html文件,以便绕过浏览器行为,您可以:

(1)从shutil导入copyfile并移动图像。在import os

import plotly

import plotly.graph_objs as go

import time

from shutil import copyfile

img_name = 'billympoufo'

dload = os.path.expanduser('~/Downloads')

save_dir = '/tmp'

data = [go.Scatter(x=[14, 19, 24, 29, 34, 39, 44, 49, 54, 59, 64, 69, 74, 79, 84, 89, 1], y=[30, 15, 18, 30, 24, 27, 50, 36, 39, 42, 50, 48, 51, 54])]

plotly.offline.plot(data, image_filename=img_name, image='svg')

### might need to wait for plot to download before copying

time.sleep(1)

copyfile('{}/{}.svg'.format(dload, img_name),

'{}/{}.svg'.format(save_dir, img_name))for more offline options: (2) check chromium or (3)Firefox download

behavior.

By using the parameter auto_open=False it

should save the image in the folder without opening a tab in your

browser but this was an an issue,

check here: Directly save image

(without opening in browser) #880

and plotly didn't plan to

add this feature at that time.

Also you can (4) use selenium to screenshot the page

在Jupiter中,要脱机保存,可以执行以下操作:import os

import pandas as pd

import plotly

import plotly.graph_objs as go

import time

from selenium import webdriver

from PIL import Image

from pyvirtualdisplay import Display

### from bokeh/io, slightly modified to avoid their import_required util

### didn't ultimately use, but leaving in case I figure out how to stick wtih phentomjs

### - https://github.com/bokeh/bokeh/blob/master/bokeh/io/export.py

def create_default_webdriver():

'''Return phantomjs enabled webdriver'''

phantomjs_path = detect_phantomjs()

return webdriver.PhantomJS(executable_path=phantomjs_path, service_log_path=devnull)

### based on last SO answer above

### - https://stackoverflow.com/questions/38615811/how-to-download-a-file-with-python-selenium-and-phantomjs

def create_chromedriver_webdriver(dload_path):

display = Display(visible=0)

display.start()

chrome_options = webdriver.ChromeOptions()

prefs = {"download.default_directory": dload_path}

chrome_options.add_experimental_option("prefs", prefs)

driver = webdriver.Chrome(chrome_options=chrome_options)

return driver, display

df = pd.DataFrame(

{'fruits': ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries'],

'counts': [5, 3, 4, 2, 4, 6] })

data = [go.Bar(x=df['fruits'],y=df['counts'])]

dload = os.path.expanduser('~/Downloads')

html_file = 'plotly-fruit-plot.html'

fname = 'plotly-fruit-plot'

### original code contained height/width for the display and chromium webdriver

### I found they didn't matter; specifying the image size to generate will

### produce a plot of that size no matter the webdriver

plotly.offline.plot(data, filename=html_file, auto_open=False,

image_width=1280, image_height=800,image_filename=fname, image='png')

### create webdrive, open file, maximize, and sleep

driver, display = create_chromedriver_webdriver(dload)

driver.get('file:///{}'.format(os.path.abspath(html_file)))

# make sure we give the file time to download

time.sleep(1)

### was in the SO post and could be a more robust way to wait vs. just sleeping 1sec

# while not(glob.glob(os.path.join(dl_location, filename))):

# time.sleep(1)

driver.close()

display.stop()

image = Image.open('{}.png'.format(os.path.join(dload, fname)))

image

或联机文件夹:import plotly.plotly as py

import plotly.graph_objs as go

# sign in

data = [

go.Scatter(

x=[14, 19, 24, 29, 5, 10, 22],

y=[15, 18, 30, 24, 27, 30, 40]

)

]

plot_out = py.plot(data, filename='all_my_graphs/my_new_plot')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值