桜チャート(Sakura Chart)

CSV を貼り付けるだけで、統計グラフを自動生成できる無料ウェブツール

桜チャートで犬を描いてみた

本記事では、散布図や折れ線グラフを扱うツール「桜チャート」を使って、 犬の絵を座標だけで描いてみたチャレンジを紹介します。
前回は桜の花を数学的に作りましたが、今回はその応用として、 X・Y座標とLEVELを使って「犬」を表現できるかどうかを試してみました。

次は動物の絵を描いてみる

前回桜の絵を桜チャートを使って描いてみたという記事を書いたのですが、
今回は犬の絵を描いてみました。

ChatGPTに「座標で犬を描いて」と頼んだら普通の画像が出てきた

まずは、自分で座標を1点ずつ考えるのが大変そうだったので、 ChatGPT にこうお願いしてみました。

「X, Y, LEVEL の3列で、犬の絵になる座標データを作ってください」

すると返ってきたのは、きれいな犬のイラスト画像でした。

「いや、そうじゃない」
と心の中でつぶやきつつ、その画像をもとに座標を生成してもらおうと試行錯誤しました。

ChatGPTが生成した犬の画像のイメージ
(最初は普通の犬の画像が生成された)

画像をもとに座標プロットさせたら、ひどい犬(?)になった

そこで、先ほど生成した犬の画像をもとにChat GPTにプロットさせたところ 以下のような画像になりました。

散布図でグラフをプロットして表示すると…

座標で描いた犬の失敗作イメージ
どう頑張っても「犬には見えない」謎の生き物になってしまった図

  かろうじて輪郭が分かるような絵になってしまいました。

Pythonで輪郭を座標として抽出してみるも、こちらも一筋縄ではいかず

今度は Python(OpenCV)で犬の輪郭を自動抽出し、 その輪郭点を桜チャートに流し込む方法を試しました。

ざっくりとした流れは、次のようなイメージです。

  • 犬の画像をグレースケールに変換する
  • エッジ検出や2値化で輪郭部分を強調する
  • 輪郭抽出で点列(X,Y)を取り出す
  • 取り出した座標をCSVにして桜チャートに読み込む
犬画像から輪郭抽出を試したイメージ
(Pythonで輪郭抽出を試したイメージ)

しかし、実際にやってみると、

  • 輪郭点が多すぎて、グラフとしては「ただの黒い塊」になりがち
  • 点を間引くと今度は輪郭がガタガタになる
  • LEVELで塗り分けようとしても、どこで区切るかの判断が難しい

といった問題にぶつかり、「きれいな犬の線画」にはなかなかたどり着けませんでした。

結局「犬の顔だけ」をグラフ化するようにお願いしたら

全身の犬を座標だけで表現するのは一旦あきらめて、 「顔だけ」に範囲を絞って、Chat GPTに座標を出してもらいました。

顔の輪郭、耳の先端、目・鼻・口の位置といった 「犬らしさ」に効くポイントだけを数十点ほどピックアップし、 それぞれに X・Y・LEVEL を振って桜チャートに読み込ませています。

桜チャートで描いた犬の顔のイメージ
(顔の輪郭とパーツだけに絞ってプロットすると、「あ、犬だ」と分かるレベルになった)

こうして描画されたグラフを見てみると、 耳の形や目・鼻の位置関係から、 「少なくとも犬の顔には見える」レベルの絵になりました。

座標で犬を描いてみて分かったこと

今回のチャレンジを通して、次のようなことが分かりました。

  • ChatGPT に「座標で犬を描いて」と頼んでも、まだ思った通りの座標は得られない
  • Pythonで輪郭抽出をしても、そのままでは座標が多すぎてグラフとして扱いづらい
  • 全身を一気に描こうとするより、「顔だけ」など範囲を絞った方が形にしやすい
  • 最終的な仕上がりには、やはり人間の調整や取捨選択が欠かせない

桜の花びらのような、数式できれいに書ける図形に比べると、 犬のような自然物は 「どこをどのくらい簡略化するか」 の判断が重要だと感じました。

まとめ:桜チャートは「図形遊び」にも使える

桜チャートはもともと実験データや統計データの可視化を目的としたツールですが、 工夫次第で今回のように 座標ベースのお絵描き にも使うことができます。

  • X・Y・LEVEL の3列があれば、犬のようなキャラクターも(工夫すれば)表現できる
  • Pythonなど他ツールと組み合わせることで、画像→座標という発想も試せる
  • 図形化の過程で、「何がその対象らしさを作っているのか」を考えるきっかけになる

座標で桜を描き、次に犬を描き、
そのうち他の動物やキャラクターにも挑戦してみたいと思っています。
興味があれば、桜の花バージョンの記事もあわせて読んでみてください。

桜チャートで桜の花を描く方法

桜チャートのホームに戻る