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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

2335閲覧

一番近い点と点を結ぶ

yonhark0

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2020/04/18 08:07

上のような散布図の点群を、下に図のような一番近い点を結んで線を引きたいです。
色々調べてはみたのですが、自分の力ではうまくできなかったため質問させていただきます。
イメージ説明
イメージ説明

ujimushi_sradjp🎉を押しています

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

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

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

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

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

meg_

2020/04/18 08:42

散布図を作成したコードとグラフのデータを掲載してください。
coco_bauer

2020/04/18 09:02

だいたい直線状に並んだ点、A,B,Cがあるとします。A-B間は3cm、B-C間は4cm、A-C間は6cmの距離があるとします。 Aに一番近い点はB、Bに一番近い点はAなので、AとBを線を結ぶことになります。 では、CとBの間は線で結ぶべきなのでしょうか?  ★Cから見て、Bは一番近い点です。だから、線で結ぶ。  ☆Bから見て、Cは一番近い点ではないです(Bに一番近い点はA)。だから、線で結ばない。 ここで質問の想定が判らなくなりました。
quickquip

2020/04/18 09:11

coco_bauer さんの話と一緒ですが、質問の下の図に明らかに一番近い点が結ばれてないところがありますよね。
jun68ykt

2020/04/18 11:51

一番近い点を結ぶというよりも、「同一直線上にあると近似できる点群に分類すること」が問題の本質のような気がしました。
yonhark0

2020/04/18 13:12

コメントありがとうございます。 大学の研究に必要で、簡単に言うと散布図の点が河川のある場所を表していて、jun68yktがおっしゃっているように河川のように線を引きたいです。 散布図の点は、"np.full((50,50),0)"で作成した配列に河川判定された座標を入れた"K"という配列のxとyを"plt.scatter(x, y)"でプロットした点で散布図を作成しました。 一番近い点同士というのは質問の意図とは違いました。 分かりづらくてすみません。
jun68ykt

2020/04/18 14:03

yonhark0さん とても知的興味をそそられる問題だとは思います。でも簡単ではなさそうですね。 点が全部で100個あるとして、ある点Aに最も近い(A以外の)点Bを特定するのは、単純に考えれば、AとA以外の99個の各点との距離を全部計算して、一番、短い距離の点をBとすればよいです。次にBに最も近い点を算出するときには、Aを除外した98個の点から最も近い点を選ぶ、というアルゴリズムにすることも考えられます。(ただし、ある1個の点と一番近い点を特定する際に、他の99個との距離を全部出さなくもいいような何らかの最適化はできるのでは、と思います。そこは工夫のしどころですね) ですが、疑問に思うのは、ある地点Aに川が流れていて、Aに最も近い地点Bに川が流れていることが分かっていても、AとBの間に川が流れているとは必ずしもいえないですよね? Aを流れる川とBを流れる川とが、AにもBにも近い点Cで合流する場合もあるでしょう。そのような場合に、グラフ上でAとBを結ぶと、実態を表さなくなりますね。 ただ、そういうケースはひとまず置いておいて、一番近い点どうしを結んでいけば、川の流れを表す図として、実態に当たらずとも遠からずなものになりそうという気はするので、ひとまずそれを表示させたい、というのはあるかもしれません。そういう問題設定でよいのでしょうか?
yonhark0

2020/04/18 14:14

jun68yktさん ありがとうございます。 工夫の仕方は色々あると思いますが、コメントしていただいたA店で他の99個の点を比較して、次にB点で98個の点を比較して・・・というイメージでとりあえず試行錯誤してみようと思います。 「AとBの間に川が流れているとは必ずしも言えないかも」という疑問については、標高データや勾配などの専門的な材料を用いているので心配ありません。 返答していただきとても助かりました!
jun68ykt

2020/04/18 14:23

どういたしまして。 ひとまず前に進められそうなら、何らか自己解決した旨をご自身で回答してそれをベストアンサーとし、このご質問は自己解決にするとよいでしょう。 それで > ・・・というイメージでとりあえず試行錯誤 してみて、そのプログラムを完成させる上で課題や疑問が発生したら、作成途中のコードも添えて、あらたなご質問を投稿されるとよいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問