%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats, integrate
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "distributions")))
x=np.random.normal(size=100)
sns.distplot(x, kde=False)
sns.distplot(x, bins=20,kde=False)#其中bins代表着将每个直方图切分成20个小块
若想要绘制出直方图的轮廓,使用fit
x=np.random.gamma(6,size=200)
sns.distplot(x, kde=False,fit=stats.gamma)
以下的数据都是由以下代码生成的
mean, cov = [0,1],[(1,.5),(.5,1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x","y"])
sns.jointplot(x="x", y="y", data=df)
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style("white"):
sns.jointplot(x=x, y=y, kind="hex", color="k")
iris = sns.load_dataset("iris")
sns.pairplot(iris)
使用内置数据集tips分析
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")
tips.head()
sns.regplot(x="total_bill", y="tip", data=tips)
sns.lmplot(x="total_bill", y="tip", data=tips)
np.random.seed(sum(map(ord, "categorical")))
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
iris = sns.load_dataset("iris")
sns.stripplot(x="day", y="total_bill", data=tips)
重叠是很正常的情况,但是重叠过后影响观测和分析值,在这里可以加上jitter,左右移动值,让重叠部分变少
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)
sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips)#l类似于圣诞树的图
sns.boxplot(x="day", y="total_bill",hue="time", data=tips)
sns.violinplot(x="day", y="total_bill", data=tips, inner =None)
sns.swarmplot(x="day", y="total_bill",data=tips, color ="w",alpha=.5)
sns.barplot(x="sex", y="survived", hue="class", data=titanic)
sns.pointplot(x="sex", y="survived", hue="class", data=titanic)
多维数据需要将数据分为子集依次画图,这种绘图称为lattice(或者trellis)绘图。Seaborn基于matplotlib提供绘制多维数据的函数。Seaborn的接口要求使用Pandas的DataFrame作为数据参数,并且必须是结构化的数据(tidy data),每一行为一个观测,每一列为一个变量。
FacetGrid类能够方便的绘制这类图像。FacetGrid对象有三个维度:row,col和hue。
tips = sns.load_dataset("tips")
tips.head()
g = sns.FacetGrid(tips,col="time")
g.map(plt.hist, "tip")#不知道为什么执行不出来
g = sns.FacetGrid(tips,col="sex",hue="smoker")
g.map(plt.scatter, "total_bill","tip",alpha=.7)#scatters是散点图
g.add_legend()
uniform_data = np.random.rand(3,3)
print(uniform_data)
heatmap = sns.heatmap(uniform_data)
ax=sns.heatmap(uniform_data,center= 0)