質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2216閲覧

【Python】Graphviz 出力フォーマットエラー

aheshiyu_tt

総合スコア11

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/13 13:59

前提・実現したいこと

下記エラーが表示されてしまいます.

terminal

1pydotplus.graphviz.InvocationException: Program terminated with status: 1. stderr follows: Format: "png" not recognized. Use one of:

最後のUse one of: 以降は何も書かれていませんでした.

もちろん,PC本体にはGraphvizをインストールしました.

試したこと

【Python】Graphvizファイル作成時にファイルフォーマットが認識されず出力エラー
上記質問の回答にある

terminal

1pip uninstall graphviz 2conda install graphviz

を実行しましたが改善されませんでした.
むしろ,一行目のpip uninstall graphvizを実行したことにより,

terminal

1ModuleNotFoundError: No module named 'graphviz'

と出る始末...

他にも,
Pydot error: file format “png” not recognized
上記質問の回答にある

terminal

1pip uninstall pydot2 2pip install pydot>=1.2.3

を実行したが改善されませんでした.
そもそも,一行目のpip uninstall pydot2の時点でpydot2が無いとのことで断念し,続いて2行目のpip install pydot>=1.2.3も実行しましたが,カレントディレクトリに「1.2.3」と書かれた拡張子も無い謎ファイルが作成されてしまいました.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/11/13 14:04

pipとcondaの併用は良くないと言われますが、その点は大丈夫ですか?
aheshiyu_tt

2020/11/14 02:20

1つ目の質問での質問者はその方法で解決したとありましたので,同様の方法を採ったまでです. 併用は良くないとのことですが,その方法以外見つけることができなかったため仕方なく試してみました.
guest

回答1

0

自己解決

# dotファイルを新規作成または既存の更新 export_graphviz(...) # 作成したdotファイルを読み込む with open(dir_path + 'tree.dot') as file: dot_graph = file.read() # 読み込んだdotファイルをgraphvizのSourceに投げる graph_source = graphviz.Source(dot_graph) # レンダリング graph_source.render(filename=dir_path+'tree', format='png')

このようにすることでpngファイルを作成することができました.

また,上記のようにレンダリング時にはディレクトリパスをファイル名に繋げることで保存したいパスを指定できます.
(指定しない場合はカレントディレクトリに保存されます)

他にも,レンダリングはpngファイルの他にファイル名そのままのオブジェクト(?)も生成されます.
上記の場合ですと,

  • .../tree
  • .../tree.png

の2つが生成されます.

【補足】
まず前提としてインストールしたgraphvizが適切に動作するかどうか確かめなければなりません.
graphvizが適切にインストールされているかどうか確かめるためには,Windowsのコマンドプロンプトから

> dot -V

を実行してgraphvizのバージョンが表示されれば良いです.
そしてさらに重要なのが,ここで一度graphvizを実行してみることです.
私の場合は

> dot -c

と実行すると何も表示されず実行が終わりました.
そしてその後,Pythonからの実行も適切に動作するようになりました.

投稿2020/11/27 07:12

編集2020/11/29 12:07
aheshiyu_tt

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問