Icon

JKI2_​028_​Funnel_​Plotting_​with_​Plotly

JKI2_027_Funnel_Plotting_with_Plotly

Just KNIME It! Season2
の第28回課題に回答しました。

https://www.knime.com/just-knime-it


Just KNIME It! Season2課題28: Plotlyによる漏斗プロットレベル: 中程度説明: この課題では、PlotlyからStacked Funnel Plotを作成しようとするデータアナリストの役割を果たします。KNIMEにはKNIME Plotlyエクステンションを通して多くのPlotly Plotがありますが、ファネルプロットは見つかりません -- Python Viewノードを使ってこのタイプの可視化を作成し、KNIMEでそれを見せてください!ヒント: 必要であれば、上記のPlotlyリンクからコード(例えば、"Stacked Funnel Plot with go.Funnel "プロットのコード)をPython Viewノードにコピーしてください。Plotlyサイトからコピーペーストした後、必ず次の行を追加してください: import knime.scripting.io as knio. fig.show() という行も削除してください。最後に、次の行をコードの最後に追加してください: knio.output_view = knio.view(fig).このチャレンジを「中程度」から「難」にしたい場合は、Table Creatorノードで独自のデータを作成し、Funnel Plotの少なくとも1つの軸の変数に渡してみてください。 Original: the code for the "Stacked Funnel Plot with go.Funnel" plot (https://plotly.com/python/funnel-charts/)from plotly import graph_objects as gofig = go.Figure()fig.add_trace(go.Funnel( name = 'Montreal', y = ["Website visit", "Downloads", "Potential customers", "Requested price"], x = [120, 60, 30, 20], textinfo = "value+percent initial"))fig.add_trace(go.Funnel( name = 'Toronto', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"], x = [100, 60, 40, 30, 20], textposition = "inside", textinfo = "value+percent previous"))fig.add_trace(go.Funnel( name = 'Vancouver', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent", "Finalized"], x = [90, 70, 50, 30, 10, 5], textposition = "outside", textinfo = "value+percent total"))fig.show() #For Python View Node:: edited as described#from plotly import graph_objects as goimport plotly.graph_objects as goimport knime.scripting.io as kniofig = go.Figure()fig.add_trace(go.Funnel( name = 'Montreal', y = ["Website visit", "Downloads", "Potential customers", "Requested price"], x = [120, 60, 30, 20], textinfo = "value+percent initial"))fig.add_trace(go.Funnel( name = 'Toronto', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"], x = [100, 60, 40, 30, 20], textposition = "inside", textinfo = "value+percent previous"))fig.add_trace(go.Funnel( name = 'Vancouver', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent", "Finalized"], x = [90, 70, 50, 30, 10, 5], textposition = "outside", textinfo = "value+percent total"))#fig.show()knio.output_view = knio.view(fig) 入力テーブルをデータ元にしたFunnel(漏斗)チャート作成コード: sryuさんのWFを参照import pandas as pdimport plotly.graph_objects as goimport knime.scripting.io as kniodf = knio.input_tables[0].to_pandas()str_col = 'stage'fig = go.Figure()for col in df.columns: if col != str_col: fig.add_trace(go.Funnel( name = col, y = df[str_col], x = df[col], textinfo = "value+percent initial"))knio.output_view = knio.view(fig) 以下に、各行の説明を記載します(BingChatで作成)。1. import pandas as pd pandasというライブラリをpdという名前でインポートします。pandasはデータ分析を行うためのライブラリで、データフレームという形式でデータを扱います。2. import plotly.graph_objects as go plotly.graph_objectsというライブラリをgoという名前でインポートします。plotlyはインタラクティブなグラフを作成するためのライブラリです。3. import knime.scripting.io as knio KNIMEのスクリプト用の入出力を扱うためのknime.scripting.ioというモジュールをknioという名前でインポートします。4. df = knio.input_tables[0].to_pandas() KNIMEから最初の入力テーブル(index 0)を取得し、pandasのデータフレームに変換してdfという変数に格納します。5. str_col = 'stage''stage’という文字列をstr_colという変数に格納します。6. fig = go.Figure() plotlyで新しいグラフ(Figure)オブジェクトを作成し、figという変数に格納します。7. for col in df.columns: dfの各列に対して以下の処理を行います。8. if col != str_col: 列名が’stage’でない場合に以下の処理を行います。9. fig.add_trace(go.Funnel(...)) Funnel(漏斗)チャートを作成し、figに追加します。Funnelチャートは、各ステージでの量や比率を視覚化するためのチャートです。10. name = col, Funnelチャートの名前を設定します。ここでは列名が使用されます。11. y = df[str_col], Funnelチャートのy軸の値を設定します。ここではdfデータフレームの’stage’列が使用されます。12. x = df[col], Funnelチャートのx軸の値を設定します。ここではdfデータフレームの各列が使用されます。13. textinfo = "value+percent initial" Funnelチャート上に表示するテキスト情報を設定します。ここでは値と初期パーセンテージが表示されます。14. knio.output_view = knio.view(fig) 作成したグラフ(fig)をKNIMEビューとして出力します。 補足:① そもそもKNIME-Python連携の初期設定が必要です。参考:https://shineemployees.blogspot.com/2022/04/knimeknimepython.html② KNIME用のPython仮想環境へPlotlyライブラリのインストールが必要です。私はconda installではAnacondaを壊してしまったので、今後はpipでのインストールだけにしようと思います。(例)仮想環境py3_knimeを使った場合conda activate py3_knime(←各自の仮想環境名)pip install plotly参考:https://qiita.com/Kaitolab/items/63b709fb893bbd207ec2 datasryuさんのCodeを参考に作成(注釈は右記参照)Edited code as described in in the "Stacked Funnel Plot with go.Funnel" plot (https://plotly.com/python/funnel-charts/)Table Creator Python View Python View Just KNIME It! Season2課題28: Plotlyによる漏斗プロットレベル: 中程度説明: この課題では、PlotlyからStacked Funnel Plotを作成しようとするデータアナリストの役割を果たします。KNIMEにはKNIME Plotlyエクステンションを通して多くのPlotly Plotがありますが、ファネルプロットは見つかりません -- Python Viewノードを使ってこのタイプの可視化を作成し、KNIMEでそれを見せてください!ヒント: 必要であれば、上記のPlotlyリンクからコード(例えば、"Stacked Funnel Plot with go.Funnel "プロットのコード)をPython Viewノードにコピーしてください。Plotlyサイトからコピーペーストした後、必ず次の行を追加してください: import knime.scripting.io as knio. fig.show() という行も削除してください。最後に、次の行をコードの最後に追加してください: knio.output_view = knio.view(fig).このチャレンジを「中程度」から「難」にしたい場合は、Table Creatorノードで独自のデータを作成し、Funnel Plotの少なくとも1つの軸の変数に渡してみてください。 Original: the code for the "Stacked Funnel Plot with go.Funnel" plot (https://plotly.com/python/funnel-charts/)from plotly import graph_objects as gofig = go.Figure()fig.add_trace(go.Funnel( name = 'Montreal', y = ["Website visit", "Downloads", "Potential customers", "Requested price"], x = [120, 60, 30, 20], textinfo = "value+percent initial"))fig.add_trace(go.Funnel( name = 'Toronto', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"], x = [100, 60, 40, 30, 20], textposition = "inside", textinfo = "value+percent previous"))fig.add_trace(go.Funnel( name = 'Vancouver', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent", "Finalized"], x = [90, 70, 50, 30, 10, 5], textposition = "outside", textinfo = "value+percent total"))fig.show() #For Python View Node:: edited as described#from plotly import graph_objects as goimport plotly.graph_objects as goimport knime.scripting.io as kniofig = go.Figure()fig.add_trace(go.Funnel( name = 'Montreal', y = ["Website visit", "Downloads", "Potential customers", "Requested price"], x = [120, 60, 30, 20], textinfo = "value+percent initial"))fig.add_trace(go.Funnel( name = 'Toronto', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"], x = [100, 60, 40, 30, 20], textposition = "inside", textinfo = "value+percent previous"))fig.add_trace(go.Funnel( name = 'Vancouver', orientation = "h", y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent", "Finalized"], x = [90, 70, 50, 30, 10, 5], textposition = "outside", textinfo = "value+percent total"))#fig.show()knio.output_view = knio.view(fig) 入力テーブルをデータ元にしたFunnel(漏斗)チャート作成コード: sryuさんのWFを参照import pandas as pdimport plotly.graph_objects as goimport knime.scripting.io as kniodf = knio.input_tables[0].to_pandas()str_col = 'stage'fig = go.Figure()for col in df.columns: if col != str_col: fig.add_trace(go.Funnel( name = col, y = df[str_col], x = df[col], textinfo = "value+percent initial"))knio.output_view = knio.view(fig) 以下に、各行の説明を記載します(BingChatで作成)。1. import pandas as pd pandasというライブラリをpdという名前でインポートします。pandasはデータ分析を行うためのライブラリで、データフレームという形式でデータを扱います。2. import plotly.graph_objects as go plotly.graph_objectsというライブラリをgoという名前でインポートします。plotlyはインタラクティブなグラフを作成するためのライブラリです。3. import knime.scripting.io as knio KNIMEのスクリプト用の入出力を扱うためのknime.scripting.ioというモジュールをknioという名前でインポートします。4. df = knio.input_tables[0].to_pandas() KNIMEから最初の入力テーブル(index 0)を取得し、pandasのデータフレームに変換してdfという変数に格納します。5. str_col = 'stage''stage’という文字列をstr_colという変数に格納します。6. fig = go.Figure() plotlyで新しいグラフ(Figure)オブジェクトを作成し、figという変数に格納します。7. for col in df.columns: dfの各列に対して以下の処理を行います。8. if col != str_col: 列名が’stage’でない場合に以下の処理を行います。9. fig.add_trace(go.Funnel(...)) Funnel(漏斗)チャートを作成し、figに追加します。Funnelチャートは、各ステージでの量や比率を視覚化するためのチャートです。10. name = col, Funnelチャートの名前を設定します。ここでは列名が使用されます。11. y = df[str_col], Funnelチャートのy軸の値を設定します。ここではdfデータフレームの’stage’列が使用されます。12. x = df[col], Funnelチャートのx軸の値を設定します。ここではdfデータフレームの各列が使用されます。13. textinfo = "value+percent initial" Funnelチャート上に表示するテキスト情報を設定します。ここでは値と初期パーセンテージが表示されます。14. knio.output_view = knio.view(fig) 作成したグラフ(fig)をKNIMEビューとして出力します。 補足:① そもそもKNIME-Python連携の初期設定が必要です。参考:https://shineemployees.blogspot.com/2022/04/knimeknimepython.html② KNIME用のPython仮想環境へPlotlyライブラリのインストールが必要です。私はconda installではAnacondaを壊してしまったので、今後はpipでのインストールだけにしようと思います。(例)仮想環境py3_knimeを使った場合conda activate py3_knime(←各自の仮想環境名)pip install plotly参考:https://qiita.com/Kaitolab/items/63b709fb893bbd207ec2 datasryuさんのCodeを参考に作成(注釈は右記参照)Edited code as described in in the "Stacked Funnel Plot with go.Funnel" plot (https://plotly.com/python/funnel-charts/)Table Creator Python View Python View

Nodes

Extensions

Links