import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
np.random.seed(sum(map(ord, 'aesthetics')))
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 7):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
plt.show()
import seaborn as sns
sinplot()
plt.show()
"""
Seaborn 默认浅灰色背景与白色网格线
seaborn将matplotlib的参数划分为两个组,第一组控制图表的样式,第二组控制图的度量尺度元素
控制样式:axes_style() set_style() 返回一系列的参数
度量图:plotting_context() set_context() 设置matplotlib的默认属性
"""
"""
图样式方法axes_style()和set_style():
5种seaborn主题形式:darkgrid, whitegrid, dark, white, ticks, 默认为darkgrid
whitegrid:白色网格
dark:灰底
white:白底
ticks:刻度
用despline()方法去掉图表中de各种轴:
with语句临时设置图表样式
"""
sns.set_style('whitegrid')
sinplot()
plt.show()
sns.set_style('dark')
sinplot()
plt.show()
sns.set_style('white')
sinplot()
plt.show()
sns.set_style('ticks')
sinplot()
plt.show()
sinplot()
sns.despine()
plt.show()
sns.set_style('whitegrid')
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data)
plt.show()
sns.set_style('whitegrid')
sns.boxplot(data=data, palette='deep')
sns.despine(left=True)
plt.show()
for idx in range(6):
plt.subplot(321 + idx)
plt.show()
with sns.axes_style('darkgrid'):
plt.subplot(211)
sinplot()
plt.subplot(212)
sinplot(-1)
plt.show()
"""
seaborn颜色设置
"""
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(rc={'figure.figsize': (6, 6)})
np.random.seed(sum(map(ord, 'palettes')))
"""
无渐变调色板
"""
current_palette = sns.color_palette()
sns.palplot(current_palette)
plt.show()
sns.palplot(sns.color_palette('hls', 8))
plt.show()
sns.palplot(sns.hls_palette(8, l=.3, s=.8))
plt.show()
sns.palplot(sns.color_palette('husl', 8))
plt.show()
"""
渐变调色板
"""
sns.palplot(sns.color_palette('Blues'))
plt.show()
sns.palplot(sns.color_palette('BuGn_r'))
plt.show()
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 7):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sns.set_palette('husl')
sinplot()
plt.show()
"""
可视化绘图
seaborn中最便捷的方式就是构造一个单变量分布使用distplot()方法,默认情况下,它会绘出矩形图(histogram)或核密度估计(KDE)
"""
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
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)
plt.show()
sns.distplot(x, kde=False, rug=True)
plt.show()
sns.distplot(x, bins=20, kde=False, rug=True)
plt.show()
sns.distplot(x, hist=False, rug=True)
plt.show()
mean, cov = [0, 1], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=['x', 'y'])
print df
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')
sns.jointplot(x='x', y='y', data=df, kind='kde')
plt.show()
"""
可视化的线性关系
"""
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, 'regression')))
tips = sns.load_dataset('tips')
print tips
"""
regplot():接受的x和y变量的格式包括简单的numpy arrays, pandas series objects or pandas DataFrame object
lmplot():必须有参数设置,并且x和y必须是字符串
"""
sns.regplot(x='total_bill', y='tip', data=tips)
plt.show()
sns.lmplot(x='total_bill', y='tip', data=tips)
plt.show()
sns.lmplot(x='size', y='tip', data=tips)
plt.show()
sns.lmplot(x='size', y='tip', data=tips, x_jitter=.05)
plt.show()
sns.lmplot(x='size', y='tip', data=tips, x_estimator=np.mean)
plt.show()