Python - seaborn ペアプロットから x,y 値を取得する

okwaves2024-01-25  9

閉まっている。この質問には詳細または明確さが必要です。現在回答を受け付けておりません。

この質問を改善したいですか?この投稿を編集して詳細を追加し、問題を明確にします。

3 年前

に閉鎖されました。

この質問を改善してください

他のソフトウェアでプロットを再作成するために、sns.pairplot のデータ、つまり x、y 値を抽出したいと考えています。

例: sns.pairplot(data, diag_kind="kde", hue="YEARS", vars=["PRICE"])

よろしくお願いします。



------------------------

対角軸を反復処理して、そこにあるすべての曲線にアクセスできます。このような曲線にはラベルと x および y データが含まれます。

import seaborn as sns

iris = sns.load_dataset("iris")
g = sns.pairplot(iris, hue="species",  vars=["petal_length"], diag_kind='kde')

for ax in g.diag_axes:
    for curve in ax.lines:
        print(curve.get_label())
        print(curve.get_xdata())
        print(curve.get_ydata())

プロットを作成せずに同様のデータを取得することもできます。

import seaborn as sns  # only needed for the demo dataset
import numpy as np
from scipy.stats import gaussian_kde

iris = sns.load_dataset("iris")

species = np.unique(iris["species"])
xmin, xmax = iris["petal_length"].min(), iris["petal_length"].max()
dx = 0.2 * (xmax - xmin)
xmin -= dx
xmax += dx
xs = np.linspace(xmin, xmax, 200)
ys = np.zeros((len(species), len(xs)))
for i, specie in enumerate(species):
    kde = gaussian_kde(iris[iris["species"] == specie]["petal_length"])
    ys[i, :] = kde(xs)

# create a plot from the given data
import matplotlib.pyplot as plt

for i, specie in enumerate(species):
    plt.plot(xs, ys[i, :], label=specie)
    plt.fill_between(xs, ys[i, :], alpha=0.3)
plt.ylim(ymin=0)
plt.legend()
plt.tight_layout()
plt.show()

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。