Seaborn可视化绘制线图
对于时间序列或是其他类型的连续变量,使用线图更容易的观察数据的整体趋势。调用Seaborn
库中的relplot
方法,设置参数kind='line'
,即可绘制线图。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style='darkgrid')
df = pd.DataFrame(dict(time=np.arange(500),
value=np.random.randn(500).cumsum()))
g = sns.relplot(x='time', y='value', kind='line', data=df)
g.fig.autofmt_xdate()
plt.show()

np.random.randn(500)会返回一组服从标准正态分布的随机样本值,cumsum()函数会计算该组数据的累加和,并返回中间结果生成的数组。简单举例。
arr = np.random.randn(10)
print(arr)
print(arr.cumsum())
g.fig.autofmt_xdate()能够旋转轴上数据的角度,防止数据重叠。可以根据需要使用参数rotation来调节旋转角度,默认30°。
我们也可以生成一些时间类型的数据来进行绘制线图。
df = pd.DataFrame(dict(time=pd.date_range('2020-1-1', periods=500),
value=np.random.randn(500).cumsum()))

在一张画布上显示更多的关系 要是用Matplotlib
在一个画布上绘制多个图形,需要用到子图,子图的布局方式按行列划分。Seaborn
的绘图布局是基于FacetGrid
对象。在relplot
方法中设置col参数
,Seaborn
会根据数据分类在同一个平面上自动对子图布局。 这里用到的fmri.csv
文件内容如下。
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid')
fmri = sns.load_dataset('fmri')
sns.relplot(x='timepoint', y='signal', hue='subject', col='region',
row='event', height=3, kind='line', estimator=None, data=fmri)
plt.show()

relplot
方法中,hue参数
调整色调,col参数
调整列,row参数
调整行,height参数
调整图形的大小线条粗细。
当我们想要检查变量的多个层次的效果时,最好在列上将变量划分,在使用wrap将其包装成行。
sns.relplot(x="timepoint", y="signal", hue="event", style="event",
col="subject", col_wrap=5,
height=3, aspect=.75, linewidth=2.5,
kind="line", data=fmri.query("region == 'frontal'"));
