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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

意見交換

クローズ

2回答

880閲覧

どうしてこのコードでグラフが可視化できる?

754x

総合スコア20

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

0グッド

1クリップ

投稿2023/04/09 07:16

0

1

テーマ、知りたいこと

以下のコードでどうして画面に表示されるかわかりません。

背景、状況

Python初心者で、あるサイトのコードを参照しながら、階層型クラスタリングを行っていました。
そして、そのデンドログラムを可視化する際に以下のコードが用いられていました。

Python

1import scipy.cluster.hierarchy as sch 2import matplotlib.pyplot as plt 3 4#クラスタリング軸設定(年収vsマンション費用) 5X = df.iloc[:, [3, 4]].values 6 7#樹形図作成用インスタンス 8dendrogram = sch.dendrogram(sch.linkage(X, method = 'ward')) 9 10#樹形図可視化 11plt.title('Dendrogram') 12plt.xlabel('Salary vs Apartment Cost') 13plt.ylabel('Euclidean distances') 14plt.show()

このコードを実行すると、デンドログラムが表示されましたが、疑問があります。

pltには、デンドログラムがを表示するコードはひとつも含まれていません。
私がコードを見る限りは、タイトルと軸ラベルを設定しただけです。
にもかかわらず、実際には、デンドログラムが表示され、そのタイトルと軸ラベルが表示されているのです。

質問

このplotの仕組みがわかりません。教えていただきたいです。
また、一般的にfig,ax = plt.subplots()として書き進めていくのであれば、どのように書き換えることができますか?

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

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

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

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

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

回答2

#1

melian

総合スコア19695

投稿2023/04/09 07:31

scipy.cluster.hierarchy.dendrogram — SciPy v1.10.1 Manual

ax : matplotlib Axes instance, optional

If None and no_plot is not True, the dendrogram will be plotted on the current axes. Otherwise if no_plot is not True the dendrogram will be plotted on the given Axes instance. This can be useful if the dendrogram is part of a more complex figure.

current axes は plt.gca()(get the current axes) で取得できますので、以下の様に指定したことになります。

python

1dendrogram = sch.dendrogram(sch.linkage(X, method = 'ward'), ax=plt.gca())

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

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

#2

754x

総合スコア20

投稿2023/04/13 09:55

編集2023/04/13 09:55

#1
回答ありがとうございます。
"If None and no_plot is not True "ということはデフォルトで
このコードの前に掲示されたものが取得されているんですね。
理解できました、ありがとうございます。

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

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

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問