6. 绘制直方图 displot()
绘制直方图使用的是sns.displot()方法
bins=6 表示 分成六个区间绘图
rug=True 表示在x轴上显示观测的小细条
kde=True表示显示核密度曲线
sns.set_style(‘darkgrid’)
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.displot(data=df1[[‘C属性值’]], bins=6, rug=True, kde=True)
plt.title(“直方图”, fontsize=18)
plt.xlabel(‘C属性值’, fontsize=18)
plt.ylabel(‘数量’, fontsize=16)
plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)
plt.show()
随机生成300个正态分布数据,并绘制直方图,显示核密度曲线
sns.set_style(‘darkgrid’)
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
np.random.seed(13)
Y = np.random.randn(300)
sns.displot(Y, bins=9, rug=True, kde=True)
plt.title(“直方图”, fontsize=18)
plt.xlabel(‘C属性值’, fontsize=18)
plt.ylabel(‘数量’, fontsize=16)
plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)
plt.show()
7. 绘制条形图 barplot()
绘制条形图使用的是barplot()方法
以产品类型 字段数据作为x轴数据,A属性值数据作为y轴数据。按照厂商编号字段的不同进行分类。
具体如下:
sns.set_style(‘darkgrid’)
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.barplot(x=“产品类型”, y=‘A属性值’, hue=“厂商编号”, data=df1)
plt.title(“条形图”, fontsize=18)
plt.xlabel(‘产品类型’, fontsize=18)
plt.ylabel(‘数量’, fontsize=16)
plt.subplots_adjust(left=0.15, right=0.9, bottom=0.15, top=0.9)
plt.show()
8. 绘制线性回归模型
绘制线性回归模型使用的是lmplot()方法。
主要的参数为x, y, data。分别表示x轴数据、y轴数据和数据集数据。
除此之外,同上述所讲,还可以通过hue指定分类的变量;
通过col指定列分类变量,以绘制 横向多重子图;
通过row指定行分类变量,以绘制 纵向多重子图;
通过col_wrap控制每行子图的数量;
通过size可以控制子图的高度;
通过markers可以控制点的形状。
下边对 X属性值 和 Y属性值 做线性回归,代码如下:
sns.set_style(‘darkgrid’)
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.lmplot(x=“A属性值”, y=‘B属性值’, data=df1)
plt.title(“线性回归模型”, fontsize=18)
plt.xlabel(‘A属性值’, fontsize=18)
plt.ylabel(‘B属性值’, fontsize=16)
plt.subplots_adjust(left=0.15, right=0.9, bottom=0.15, top=0.9)
plt.show()
9. 绘制 核密度图 kdeplot()
9.1 一般核密度图
绘制和密度图,可以让我们更直观地看出样本数据的分布特征。绘制核密度图使用的方法是kdeplot()方法。
对A属性值和B属性值绘制核密度图,
将shade设置为True可以显示包围的阴影,否则只有线条。
sns.set_style(‘darkgrid’)
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.kdeplot(df1[“A属性值”], shade=True, data=df1, color=‘r’)
sns.kdeplot(df1[“B属性值”], shade=True, data=df1, color=‘g’)
plt.title(“核密度图”, fontsize=18)
plt.xlabel(‘Value’, fontsize=18)
plt.subplots_adjust(left=0.15, right=0.9, bottom=0.15, top=0.9)
plt.show()
9.2 边际核密度图
绘制边际核密度图时使用的是sns.jointplot()方法。参数kind应为"kde"。使用该方法时,默认使用的是dark样式。且不建议手动添加其他样式,否则可能使图像无法正常显示。
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.jointplot(x=df1[“A属性值”], y=df1[“B属性值”], kind=“kde”, space=0)
plt.show()
10. 绘制 箱线图 boxplot()
绘制箱线图使用到的是boxplot()方法。
基本的参数有x, y, data。
除此之外 还可以有
hue 表示分类字段
width 可以调节箱体的宽度
notch 表示中间箱体是否显示缺口,默认False不显示。
鉴于前边的数据数据量不太够不便展示,这里再生成一组数据:
np.random.seed(13)
Y = np.random.randint(20, 150, 360)
df2 = pd.DataFrame(
{‘厂商编号’: [‘001’, ‘001’, ‘001’, ‘002’, ‘002’, ‘002’, ‘003’, ‘003’, ‘003’, ‘004’, ‘004’, ‘004’] * 30,
‘产品类型’: [‘AAA’, ‘BBB’, ‘CCC’, ‘AAA’, ‘BBB’, ‘CCC’, ‘AAA’, ‘BBB’, ‘CCC’, ‘AAA’, ‘BBB’, ‘CCC’] * 30,
‘XXX属性值’: Y
}
)
生成好后,开始绘制箱线图:
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.boxplot(x=‘产品类型’, y=‘XXX属性值’, data=df2)
plt.show()
交换x、y轴数据后:
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.boxplot(y=‘产品类型’, x=‘XXX属性值’, data=df2)
plt.show()
可以看到箱线图的方向也随之改变
将厂商编号作为分类字段:
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.boxplot(x=‘产品类型’, y=‘XXX属性值’, data=df2, hue=“厂商编号”)
plt.show()
11. 绘制 提琴图 violinplot()
提琴图结合了箱线图和核密度图的特征,用于展示数据的分布形状。
使用violinplot()方法绘制提琴图。
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.violinplot(x=‘产品类型’, y=‘XXX属性值’, data=df2)
plt.show()
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.violinplot(x=‘XXX属性值’, y=‘产品类型’, data=df2)
plt.show()
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
sns.violinplot(x=‘产品类型’, y=‘XXX属性值’, data=df2, hue=“厂商编号”)
plt.show()
12. 绘制 热力图 heatmap()
以双色球中奖号码数据为例绘制热力图,这里数据采用随机数生成。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
plt.figure(figsize=(6,6))
plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]
s1 = np.random.randint(0, 200, 33)
s2 = np.random.randint(0, 200, 33)
s3 = np.random.randint(0, 200, 33)
s4 = np.random.randint(0, 200, 33)
s5 = np.random.randint(0, 200, 33)
s6 = np.random.randint(0, 200, 33)
s7 = np.random.randint(0, 200, 33)
data = pd.DataFrame(
{‘一’: s1,
‘二’: s2,
‘三’: s3,
‘四’:s4,
‘五’:s5,
‘六’:s6,
‘七’:s7
}
)
plt.title(‘双色球热力图’)
sns.heatmap(data, annot=True, fmt=‘d’, lw=0.5)
plt.xlabel(‘中奖号码位数’)
plt.ylabel(‘双色球数字’)
x = [‘第1位’, ‘第2位’, ‘第3位’, ‘第4位’, ‘第5位’, ‘第6位’, ‘第7位’]
plt.xticks(range(0, 7, 1), x, ha=‘left’)
plt.show()