如何解决从seaborn pairplot获取x,y值
我想提取一个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,alpha=0.3)
plt.ylim(ymin=0)
plt.legend()
plt.tight_layout()
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。