閉まっている。この質問には詳細または明確さが必要です。現在回答を受け付けておりません。
この質問を改善したいですか?この投稿を編集して詳細を追加し、問題を明確にします。
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()