Seaborn可视化绘制线图

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'"));

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43965708/article/details/112984843