gpt4 book ai didi

python - 使用 Kaleido 导出 Plotly 图表不起作用?

转载 作者:行者123 更新时间:2023-12-05 04:50:06 25 4
gpt4 key购买 nike

我在 Jupyter Notebook 中本地创建了 plotly 图表,我试图将其保存为本地计算机上的 png 文件。图表示例:

for table in EG_SD_pivots:
df = EG_SD_pivots[table].reset_index()
fig = make_subplots(specs=[[{"secondary_y": True}]])

fig.add_trace(
go.Scatter(x=df.iloc[:, 0], y=df['SD_Credibility'], name="Credibility", marker=dict(color=yellow)), secondary_y=True)

fig.add_trace(
go.Bar(x=df.iloc[:, 0], y=df['EG_LR_Rel'], name="EG Relativity", marker=dict(color=teal)), secondary_y=False)

fig.add_trace(
go.Bar(x=df.iloc[: ,0], y=df['SD_LR_Rel'], name="SD Relativity", marker=dict(color=indigo)), secondary_y=False)

# Add figure title
fig.update_layout(title_text=df.iloc[:0].columns[0], margin=dict(b=200))

# Set x-axis title
fig.update_xaxes(title_text=df.iloc[:0].columns[0])

fig.update_yaxes(title_text="<b>Relativity</b>", secondary_y=False)
fig.update_yaxes(title_text="<b>Credibility</b>", secondary_y=True)
fig.show()

我尝试了多种不同的解决方案,但它们都返回了各种错误...解决方案:fig.to_image(format="png") --> 返回

ValueError: 
The orca executable is required to export figures as static images,
but it could not be found on the system path.

plotly.orca.config.executable = 'C:/Program Files/Anaconda3/pkgs/plotly-4.0.0-py_0/site-packages/plotly/io/_orca.py' - -> 返回

AttributeError: module 'chart_studio.plotly' has no attribute 'orca'

plotly.offline.iplot(fig, filename=(str(chart) + '.png')) --> 返回

AttributeError: module 'chart_studio.plotly' has no attribute 'offline'

fig.write_image("EG_SD_images/"+ str(chart) + ".png", engine="kaleido") --> 返回

`TypeError: write_image() got an unexpected keyword argument 'engine'`

plotly.image.save_as(fig, filename=(str(chart) + '.png')) --> 返回

Error                                     Traceback (most recent call last)
C:\Program Files\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname)
452 try:
--> 453 cnx.do_handshake()
454 except OpenSSL.SSL.WantReadError:

C:\Program Files\Anaconda3\lib\site-packages\OpenSSL\SSL.py in do_handshake(self)
1906 result = _lib.SSL_do_handshake(self._ssl)
-> 1907 self._raise_ssl_error(self._ssl, result)
1908

C:\Program Files\Anaconda3\lib\site-packages\OpenSSL\SSL.py in _raise_ssl_error(self, ssl, result)
1638 else:
-> 1639 _raise_current_error()
1640

C:\Program Files\Anaconda3\lib\site-packages\OpenSSL\_util.py in exception_from_error_queue(exception_type)
53
---> 54 raise exception_type(errors)
55

Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]

During handling of the above exception, another exception occurred:

SSLError Traceback (most recent call last)
C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
599 body=body, headers=headers,
--> 600 chunked=chunked)
601

C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw)
342 try:
--> 343 self._validate_conn(conn)
344 except (SocketTimeout, BaseSSLError) as e:

C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py in _validate_conn(self, conn)
838 if not getattr(conn, 'sock', None): # AppEngine might not have `.sock`
--> 839 conn.connect()
840

C:\Program Files\Anaconda3\lib\site-packages\urllib3\connection.py in connect(self)
343 server_hostname=server_hostname,
--> 344 ssl_context=context)
345

C:\Program Files\Anaconda3\lib\site-packages\urllib3\util\ssl_.py in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir)
343 if HAS_SNI and server_hostname is not None:
--> 344 return context.wrap_socket(sock, server_hostname=server_hostname)
345

C:\Program Files\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname)
458 except OpenSSL.SSL.Error as e:
--> 459 raise ssl.SSLError('bad handshake: %r' % e)
460 break

SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])",)

During handling of the above exception, another exception occurred:

MaxRetryError Traceback (most recent call last)
C:\Program Files\Anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
448 retries=self.max_retries,
--> 449 timeout=timeout
450 )

C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
637 retries = retries.increment(method, url, error=e, _pool=self,
--> 638 _stacktrace=sys.exc_info()[2])
639 retries.sleep()

C:\Program Files\Anaconda3\lib\site-packages\urllib3\util\retry.py in increment(self, method, url, response, error, _pool, _stacktrace)
397 if new_retry.is_exhausted():
--> 398 raise MaxRetryError(_pool, url, error or ResponseError(cause))
399

MaxRetryError: HTTPSConnectionPool(host='api.plotly.com', port=443): Max retries exceeded with url: /v2/images (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

During handling of the above exception, another exception occurred:

SSLError Traceback (most recent call last)
C:\Program Files\Anaconda3\lib\site-packages\chart_studio\api\v2\utils.py in request(method, url, **kwargs)
171 try:
--> 172 response = requests.request(method, url, **kwargs)
173 except RequestException as e:

C:\Program Files\Anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs)
59 with sessions.Session() as session:
---> 60 return session.request(method=method, url=url, **kwargs)
61

C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
532 send_kwargs.update(settings)
--> 533 resp = self.send(prep, **send_kwargs)
534

C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py in send(self, request, **kwargs)
645 # Send the request
--> 646 r = adapter.send(request, **kwargs)
647

C:\Program Files\Anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
513 # This branch is for urllib3 v1.22 and later.
--> 514 raise SSLError(e, request=request)
515

SSLError: HTTPSConnectionPool(host='api.plotly.com', port=443): Max retries exceeded with url: /v2/images (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

During handling of the above exception, another exception occurred:

PlotlyRequestError Traceback (most recent call last)
<ipython-input-39-fb5a62f7ab75> in <module>
69 fig.show()
70 EG_SD_charts[table] = fig
---> 71 plotly.image.save_as(fig, filename=(str(chart) + '.png'))
72 #plotly.offline.iplot(fig, filename=(str(chart) + '.png'))
73 #fig.write_image("EG_SD_images/" + str(chart) + ".png", engine="kaleido")

C:\Program Files\Anaconda3\lib\site-packages\chart_studio\plotly\plotly.py in save_as(cls, figure_or_data, filename, format, width, height, scale)
908 filename += "." + format
909
--> 910 img = cls.get(figure_or_data, format, width, height, scale)
911
912 f = open(filename, "wb")

C:\Program Files\Anaconda3\lib\site-packages\chart_studio\plotly\plotly.py in get(figure_or_data, format, width, height, scale)
817 payload["scale"] = scale
818
--> 819 response = v2.images.create(payload)
820
821 headers = response.headers

C:\Program Files\Anaconda3\lib\site-packages\chart_studio\api\v2\images.py in create(body)
16 """
17 url = build_url(RESOURCE)
---> 18 return request("post", url, json=body)

C:\Program Files\Anaconda3\lib\site-packages\retrying.py in wrapped_f(*args, **kw)
47 @six.wraps(f)
48 def wrapped_f(*args, **kw):
---> 49 return Retrying(*dargs, **dkw).call(f, *args, **kw)
50
51 return wrapped_f

C:\Program Files\Anaconda3\lib\site-packages\retrying.py in call(self, fn, *args, **kwargs)
204
205 if not self.should_reject(attempt):
--> 206 return attempt.get(self._wrap_exception)
207
208 delay_since_first_attempt_ms = int(round(time.time() * 1000)) - start_time

C:\Program Files\Anaconda3\lib\site-packages\retrying.py in get(self, wrap_exception)
245 raise RetryError(self)
246 else:
--> 247 six.reraise(self.value[0], self.value[1], self.value[2])
248 else:
249 return self.value

C:\Program Files\Anaconda3\lib\site-packages\six.py in reraise(tp, value, tb)
691 if value.__traceback__ is not tb:
692 raise value.with_traceback(tb)
--> 693 raise value
694 finally:
695 value = None

C:\Program Files\Anaconda3\lib\site-packages\retrying.py in call(self, fn, *args, **kwargs)
198 while True:
199 try:
--> 200 attempt = Attempt(fn(*args, **kwargs), attempt_number, False)
201 except:
202 tb = sys.exc_info()

C:\Program Files\Anaconda3\lib\site-packages\chart_studio\api\v2\utils.py in request(method, url, **kwargs)
177 status_code = response.status_code if response else None
178 content = response.content if response else "No content"
--> 179 raise exceptions.PlotlyRequestError(message, status_code, content)
180 validate_response(response)
181 return response

PlotlyRequestError: No message

最佳答案

我也有错误:TypeError: write_image() got an unexpected keyword argument 'engine'. 根据 plotly/Kaleido manual :

Versions 4.9 and above of the Plotly Python library will automatically use Kaleido for static image export when Kaleido is installed.

尝试通过以下方式检查版本:

import plotly
plotly.__version__

然后您可以通过以下方式更新您的 Plotly:

pip install plotly==5.3.1

这将卸载旧版本并安装最新版本。

关于python - 使用 Kaleido 导出 Plotly 图表不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67374558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com