1
0

More than 1 year has passed since last update.

fig.write_imageを実行するとValueErrorが発生してハマった話

Last updated at Posted at 2022-01-25

plotlyで作成したグラフをPDF出力とhtml出力させようとしたらハマった話の第一弾です。

環境

使用した環境
・Google Colaboratory
使用言語
・Python

実現したいこと

Plotlyで動的なグラフを作成し、作成したグラフを出力する。

サンプルコード
!pip install japanize-matplotlib

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm
import japanize_matplotlib 
import plotly
import plotly.graph_objs as go

# plotlyを使用するための準備
import plotly.io as pio
from plotly.subplots import make_subplots
pio.renderers.default = "colab"

# orcaのインストール
!pip install plotly>=4.7.1
!wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage -O /usr/local/bin/orca
!chmod +x /usr/local/bin/orca
!apt-get install xvfb libgtk2.0-0 libgconf-2-4

plt.rcParams['font.family']
plt.rcParams['font.family'] = 'IPAexGothic'

!pip install fpdf

# 「IPA」フォントをインストール
!apt-get -y install fonts-ipafont-gothic
# matplotlibのキャッシュをクリア
!rm /root/.cache/matplotlib/fontlist-v300.json

# plotlyの簡単なグラフを作成
trace = go.Scatter(
    x = [1,2,3,4,5],
    y = [10,20,30,20,10],
    mode = 'markers + lines',
    text=["A","B","C","D","E"],
    marker= dict(size= 14,
                line= dict(width=1),
                color= "red",
                opacity= 0.3
                ),
)

data = [trace]
go.Figure(data).show()

trace1 = go.Scatter(
    x = [1,2,3,4,5],
    y = [10,20,30,20,10],
    mode = 'markers + lines',
)

trace2 = go.Scatter(
    x = [1,2,3,4,5],
    y = [20,20,20,20,20],
    mode = 'markers + lines',
)

data = [trace1, trace2]

layout = go.Layout(
    title  ="2つのトレース",
)

fig = go.Figure(data, layout)
fig.show()

fig.write_image("該当ファイルを置きたいパス/test.pdf")

上記のコードを実行するとValueErrorが発生しました。

エラー内容

ValueError Traceback (most recent call last)
in ()
----> 1 fig.write_image("該当ファイルを置きたいパス/test.pdf")

4 frames
/usr/local/lib/python3.7/dist-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 '/usr/local/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
...以下割愛

エラー内容を見てみるとorcaをインストールしていなければするように記載されていますがインストールする記述はしており、実際にコマンドでバージョンの確認もとれています。

やってみたこと

こちらのサイトをもとに以下コマンドの実行
→変化無し

!pip install plotly == 4.7.1
!wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage -O / usr / local / bin / orca
!chmod + x / usr / local / bin / orca
!apt-get install xvfb libgtk2.0-0 libgconf-2-4
import plotly.graph_objects as go

解決方法

こちらのサイトをもとにorcaではなくkaleidoを使用するようにorcaを使用する記述を削除し以下を追記する

!pip install plotly
# kaleidoをインストール
!pip install -U kaleido
!pip install --upgrade plotly

→ValueError解消!
また、こちらにはorcaではなくkaleidoの使用が推奨されている旨の記載がありました。
しかし、新たにAttributeErrorが表示されてしまいました。。。
続きます。。。

参考サイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0