ChatGPTとPythonで作るインタラクティブなグラフ

H2O plot AI

データ可視化について

研究や教育の現場において、データの可視化は重要な役割を果たす。特に化学分野では、分子の構造と物性の関係を視覚的に理解することが、新たな発見や深い理解につながることが多い。しかし、従来のエクセルによるグラフ作成では、静的な表現に留まり、インタラクティブな要素を取り入れることは困難である。

今回、エクセルでは描画できないグラフを作成するため、生成AIを用いてインタラクティブなグラフの描を試した。今回使用したのはGPT-4.1である。このモデルは,コーディング能力が高い割に安いのが特徴だ。

Just a moment...

なぜエクセルでは不十分なのか

エクセルは確かに優れた表計算ソフトウェアであり、基本的なグラフ作成には十分な機能を持っている。しかし、以下のような高度な要求には対応できない:

  1. 画像データの統合:プロット点に対応する画像(今回の場合は分子構造)を動的に表示することができない
  2. インタラクティブ性の欠如:マウスオーバーによる詳細情報の表示など、ユーザーとの対話的な操作が限定的である
  3. カスタマイズの制限:特殊な可視化要件に対して、柔軟な対応が困難である

これらの制約により、複雑なデータセットを扱う研究者や教育者にとって、より高度なツールの必要性が生じている。

Pythonによる解決策

Pythonは豊富なライブラリを持ち、特にデータ可視化においては matplotlib、plotly、tkinter などの強力なツールが利用可能である。今回開発したいシステムは、これらのライブラリを組み合わせることで、以下の機能を実装することを期待した:

システムの主要機能

  1. 画像の一括登録機能 フォルダを選択するだけで、その中に含まれる全ての分子画像を自動的に読み込む。これにより、大量のデータを扱う際の作業効率が大幅に向上する。
  2. データの紐付けインターフェース 各画像に対して、分子名、x軸の値(今回は分子量)、y軸の値(今回は沸点)を簡単に入力できるGUIを提供。直感的な操作で、画像とデータの関連付けが可能である。
  3. インタラクティブなプロット表示 グラフ上の各点にマウスカーソルを合わせると、対応する分子の画像と詳細情報がポップアップ表示される。これにより、データポイントの背景にある情報を即座に確認できる。

GPT-4.1への依頼

そこで,GPT-4,1に以下のようなプロンプトを入力した。

Pythonでグラフを描画するインタラクティブなGUIを作成したいです。描画内容はx軸とy軸とタイトル,それぞれのプロットです。まず,描画するプロット用の画像を一気に登録します。画像ファイルが格納されたフォルダを選択することにより,一気に画像を登録します。続いて,それぞれの画像の名前,xの値,yの値を紐づけていきます。すべてに紐づけ終わったら,「グラフ描画」を押すと,グラフにプロットされます。プロットは点です。プロットにカーソルを合わせると,対応する画像と名前が表示されます。ステップバイステップでコードを作成し,全文を出力してください。。

いまさらながら,「ステップバイステップで」構文を使用している。

ChatGPTに教わった秘訣、プロンプトエンジニアリング手法8選 - Qiita
餅は餅屋、ということわざがあるように、ChatGPTを最大限に活用する方法を学ぶのに最適なのは、ChatGPT自身に教わることです。この記事では、実際にChatGPTから直接レッスンを受けるかのように、プロンプトエンジニアリングの秘訣を解説します。これにより、質の高い回答を...

実証実験:分子量と沸点の関係

GPTに作ってもらったシステムの有効性を検証するため、分子量が近い8つの分子を選定し、それらの沸点を比較した。選定した分子は以下の通りである:

  • メタン(CH₄)
  • アンモニア(NH₃)
  • 水(H₂O)
  • ネオン(Ne)
  • アセチレン(C₂H₂)
  • ジボラン(B₂H₆)
  • 一酸化炭素(CO)
  • 窒素(N₂)

これらの分子は、分子量が14~30の範囲に収まる比較的小さな分子である。通常、同程度の分子量を持つ物質では、沸点もある程度似た値を示すことが期待される。これらの分子を,以下の画像のように順次登録し,グラフにプロットした。

このフォーマットは一切指定していないが,入力しやすく作ってくれた。

特異なプロットの見つけやすさ

グラフを描画した結果、一つの分子が他から大きく外れた位置にプロットされた。

0度以下の沸点ばかりなのに,一つだけ100度の物質がある。

カーソルを合わせてみると、ポップアップが生じた。外れ値は水であった。水の沸点(100°C)は、同程度の分子量を持つ他の分子と比較して異常に高い値を示している。

この現象は、水分子間に働く強い水素結合によるものである。水素結合は、通常の分子間力よりもはるかに強い相互作用であり、水分子同士を強く結びつける。その結果、液体から気体への相転移(沸騰)に必要なエネルギーが増大し、沸点が上昇する。

このような科学的知見を、インタラクティブなグラフを通じて視覚的に理解できることは、研究や教育的価値が極めて高い。多量のデータを持ってきて一気にプロットし,気になる点をクリックするだけで詳細を知ることができるのだ。

システムの応用可能性

今回の実験では8個の分子という比較的少ないデータセットを用いたが、このシステムの真価は、より大規模なデータセットで発揮される。例えば、数百から数千の化合物を扱う場合、以下のような利点が顕著になる:

  1. 高密度プロットでの情報表示 プロット点が密集した場合、従来の方法では個々の点に対応する構造式や画像を直接埋め込むことは不可能である。しかし、マウスオーバーによる動的表示であれば、どれだけ密集していても問題なく情報を提供できる。
  2. パターン認識の支援 大量のデータの中から、特定のパターンや外れ値を視覚的に発見することが容易になる。研究者は、興味深いデータポイントを見つけ次第、即座にその詳細を確認できる。
  3. 複数の物性値の同時比較 x軸とy軸に異なる物性値を割り当てることで、様々な相関関係を探索できる。例えば、融点vs沸点、分子量vs密度など、研究目的に応じた柔軟な分析が可能である。

まとめ

エクセルでは描画できないインタラクティブなデータ可視化は、科学研究と教育に新たな可能性をもたらす。Pythonの柔軟性と豊富なライブラリを活用することで、従来は困難であった複雑な可視化要求にも対応できるようになった。生成AIを活用して開発した今回のシステムは、その一例に過ぎないが、データと画像を統合した直感的な分析環境の重要性を示している。

科学の進歩とともに、扱うデータはますます複雑化している。このような状況において、データを単に表示するだけでなく、インタラクティブに探索し、新たな発見につなげるツールの開発は、今後ますます重要になるだろう。

Amazon.co.jp: Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ eBook : 森 巧尚: Kindleストア
Amazon.co.jp: Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ eBook : 森 巧尚: Kindleストア

コメント

タイトルとURLをコピーしました