Plotly-express-18-plotly输出静态图
本文介绍的是如何在Plotly
中输出静态图,尝试使用了两种方式:
- Kaleido
- Orca
输出的时候可以指定不同的格式:pngjpegpdf
等
Orca
Orca is a pipeline orchestration tool that allows you to define dynamic data sources and explicitly connect them to processing functions. Orca has many features for working with Pandas data structures, but it can be used with anything.
Orca has explit goals of flexibility, transparency, lazy execution, and encouraging good practices. Those goals are achieved by:
- Flexibility
- Users may write and run any Python
- Transparency
- Dependencies between data and processing units are explicitly listed
- Your code is a record of everything that happens
- Lazy execution
- Orca only calls functions if they are explicitly needed
- Good practices
- Encourage small, functional units
- Encourage code re-use
代码
代码语言:javascript复制import plotly.graph_objects as go
import numpy as np
np.random.seed(1)
N = 100
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
sz = np.random.rand(N) * 30
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x,
y=y,
mode="markers",
marker=go.scatter.Marker(
size=sz,
color=colors,
opacity=0.6,
colorscale="Viridis")
))
fig.show()
图片
报错
但是当在使用Orca进行保存的时候出现了报错:
代码语言:javascript复制import os
if not os.path.exists("images"):
os.mkdir("images") # 不存在则创建目录
fig.write_image("images/fig1.png") # 保存在当前的images目录下
出现的报错:原因在于orca没有添加到环境变量中
代码语言:javascript复制ValueError Traceback (most recent call last)
<ipython-input-3-81433d09fdb2> in <module>
----> 1 fig.write_image("images/fig1.png")
/Applications/downloads/anaconda/anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in write_image(self, *args, **kwargs)
2822 import plotly.io as pio
2823
-> 2824 return pio.write_image(self, *args, **kwargs)
2825
2826 # Static helpers
/Applications/downloads/anaconda/anaconda3/lib/python3.7/site-packages/plotly/io/_orca.py in write_image(fig, file, format, scale, width, height, validate)
1768 # Do this first so we don't create a file if image conversion fails
1769 img_data = to_image(
-> 1770 fig, format=format, scale=scale, width=width, height=height, validate=validate
1771 )
1772
/Applications/downloads/anaconda/anaconda3/lib/python3.7/site-packages/plotly/io/_orca.py in to_image(fig, format, width, height, scale, validate)
1533 # Make sure orca sever is running
1534 # -------------------------------
-> 1535 ensure_server()
1536
1537 # Handle defaults
/Applications/downloads/anaconda/anaconda3/lib/python3.7/site-packages/plotly/io/_orca.py in ensure_server()
1388 # Validate orca executable only if server_url is not provided
1389 if status.state == "unvalidated":
-> 1390 validate_executable()
1391 # Acquire lock to make sure that we keep the properties of orca_state
1392 # consistent across threads
/Applications/downloads/anaconda/anaconda3/lib/python3.7/site-packages/plotly/io/_orca.py in validate_executable()
1182 for more info on Xvfb
1183 """
-> 1184 raise ValueError(err_msg)
1185
1186 if not help_result:
ValueError:
The orca executable is required in order to export figures as static images,
but the executable that was found at '/Users/piqianchao/.nvm/versions/node/v13.0.1/bin/orca'
does not seem to be a valid plotly orca executable. Please refer to the end of
this message for details on what went wrong.
If you haven't installed orca yet, you can do so using conda as follows:
$ conda install -c plotly plotly-orca
Alternatively, see other installation methods in the orca project README at
https://github.com/plotly/orca
After installation is complete, no further configuration should be needed.
..........
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1011:10)
解决
- 先检查Orca是否安装
With the dependencies installed, install Orca with pip:
代码语言:javascript复制pip install orca
Orca may also be installed with conda:
代码语言:javascript复制conda install -c udst orca
Add the server option to include the optional server dependencies:
代码语言:javascript复制pip install orca[server]
- 如果安装之后,将Orca添加到电脑的环境变量中即可,具体参考Mac/Linux环境变量设置
- 其他依赖
- Make sure nodejs is installed. (I use Homebrew on my Mac.)
- Install gulp:
npm install -g gulp
- Change directories to
orca/server/static
- Run
npm install
to install dependencies - Build the bundle:
gulp js-build
, or - Watch JS files to rebuild the bundle on changes:
gulp js-watch
Orca的使用和安装挺麻烦的,那么Kaleido来了?
Kaleido
Intro
Kaleido is a cross-platform library for generating static images (e.g. png, svg, pdf, etc.) for web-based visualization libraries, with a particular focus on eliminating external dependencies.
The project’s initial focus is on the export of plotly.js images from Python for use by plotly.py, but it is designed to be relatively straight-forward to extend to other web-based visualization libraries, and other programming languages.
The primary focus of Kaleido (at least initially) is to serve as a dependency of web-based visualization libraries like plotly.py. As such, the focus is on providing a programmatic-friendly, rather than user-friendly, API.
https://www.ctolib.com/plotly-Kaleido.html
install
安装直接pip install kaleido
Install the kaleido wheel.
代码语言:javascript复制$ pip install kaleido
Install plotly as well
代码语言:javascript复制$ pip install plotly
demo
代码语言:javascript复制from kaleido.scopes.plotly import PlotlyScope
import plotly.graph_objects as go
scope = PlotlyScope()
fig = go.Figure(data=[go.Scatter(y=[1, 3, 2])])
with open("figure.png", "wb") as f: # 在本地目录下面就会生成文件
f.write(scope.transform(fig, format="png"))
相比较于Orca,Kaleido还是非常简洁的
https://github.com/plotly/Kaleido