我们前面介绍了matplotlib,matplotlib实际上是一种相对底层的工具。要绘制一张图表,你要对一些基本组件进行组装:数据展示(即图表类型:线型图、柱状图、盒形图、散布图、等值线图等)、 图例、标题、刻度标签以及其他注解信息。Seaborn 是基于 Python 且非常受欢迎的图形可视化库,在 Matplotlib 的基础上,进行了更高级的封装,使得作图更加方便快捷。
在介绍seaborn之前,先来看一下pandas内置的绘图方法(实际上也是通过传递给matplotlib实现的)。Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,它们所生成的是线型图
%matplotlib notebook
import pandas as pd
import numpy as np
s=pd.Series(np.random.randn(100).cumsum())
s.plot()
该Series对象的索引会被传给matplotlib,并用以绘制X轴。可以通过 use_index=False禁用该功能。X轴的刻度和界限可以通过xticks和xlim选项进行调 节,Y轴就用yticks和ylim:
s=pd.Series(np.random.randn(100).cumsum())
pt=s.plot(style='g--',
label='Random Meandring',
xticks=range(0,120,20),
)
pt.legend(loc='best')
pt.set_title('A chart',fontsize='small')
DataFrame的plot方法会在一个subplot中为各列绘制一条线,并自动创建图例:
data=pd.DataFrame()
for i in range(4):
s=pd.Series(np.random.randn(100).cumsum())
data[i+1]=s
data.plot()
plot.bar()和plot.barh()分别绘制水平和垂直的柱状图。这时,Series和DataFrame的 索引将会被用作X(bar)或Y(barh)刻度:
s=pd.Series(np.random.randint(1,10,size=10))
fig,axes=plt.subplots(2,1)
s.plot.bar(ax=axes[0],color='red',alpha=0.3)
s.plot.barh(ax=axes[1],color='#ff00ff')
对于 DataFrame,柱状图会将每一行的值分为一组,并排显示:
df=pd.DataFrame(np.random.rand(5,4),
index=list('abcde'),
columns=['one','two','three','four'])
axes=df.plot.bar(color=['red','green','blue','#ff00f0'],
alpha=0.3)
axes.legend(loc='best')
stacked=True即可为DataFrame生成堆积柱状图:
axes=df.plot.bar(color=['red','green','blue','#ff00f0'],
alpha=0.3,
stacked=True)
seaborn与pandas有很好的交互效果,下面使用seaborn创建一个柱形图:
直方图和密度图
import seaborn as sns
norm1=np.random.normal(0,1,size=200)
norm2=np.random.normal(8,4,size=200)
norm=np.concatenate([norm1,norm2])
sns.distplot(norm,bins=100,color='k')
散点图
sns.pairplot(trans_data,diag_kind='kde',plot_kws={'alpha':0.3})
閱讀更多 數據心法 的文章