作图8——Seaborn的直方图

本文通过Python代码展示了如何使用Seaborn库绘制不同类型的正态分布图,包括直方图、密度图及边际毛毯图等,并与Matplotlib进行了对比,帮助读者更好地理解数据分布特征。
import numpy.random as npr


size=1000
rn1=npr.standard_normal(size)

import matplotlib.pyplot as plt
import seaborn as sns

sns.set_palette('muted')
fig,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,figsize=(10,10))
ax1.hist(rn1,bins=25)
ax1.set_title('fig1')#matplotlib的作图效果
sns.distplot(rn1, bins=25, kde=False, ax=ax2)#seaborn的distplot作图效果
ax2.set_title('fig2')
sns.distplot(rn1,bins=25, kde= True, ax= ax3)#增添核密度曲线的效果
ax3.set_title('fig3')
sns.distplot(rn1,bins=25, kde=True, rug=True, ax=ax4)#添加边际毛毯图
ax4.set_title('fig4')

### 使用 Python 绘制频率直方图 #### Matplotlib 库绘制简单直方图 为了创建基本的频率直方图,可以利用 `matplotlib` 中的 `plt.hist()` 函数。此函数允许指定多个参数来调整图表外观,比如设置条形的颜色、宽度以及边界数量等。 ```python import matplotlib.pyplot as plt import numpy as np data = np.random.randn(1000) plt.figure(figsize=(8, 6)) plt.hist(data, bins=30, edgecolor='black', alpha=0.7, color='lightgreen') plt.title('使用Matplotlib绘制的频率直方图') plt.xlabel('数值范围') plt.ylabel('频数') plt.show() ``` 这段代码展示了如何生成一组随机数据并将其绘制成直方图[^1]。 #### Seaborn 库增强版直方图 对于更复杂的场景或者希望获得更加美观的效果时,则可以选择基于 `matplotlib` 构建而成的高级接口——Seaborn 来完成任务。下面的例子说明了怎样借助于 `seaborn.displot()` 方法实现带核密度估计(KDE) 的直方图展示: ```python import seaborn as sns import numpy as np sns.set(style="whitegrid") # 设置风格样式 data = np.random.randn(1000) g = sns.displot( data, kind="hist", kde=True, stat="density", # 将y轴转换成概率密度形式 bins=30, palette="pastel", height=6, aspect=1.5 ) g.fig.suptitle('使用Seaborn displot绘制的概率密度直方图', y=1.02) g.ax.set_xlabel('数值区间') g.ax.set_ylabel('概率密度') plt.show() ``` 这里不仅实现了常规意义上的直方统计功能,还加入了平滑曲线拟合部分用于直观反映整体趋势变化情况。 #### 带分类别的直方图比较 当涉及到多组不同类别的样本对比分析时,可以通过引入额外的关键字参数如 `hue` 实现分组效果。这有助于在同一张图上清晰地区分开各个子集之间的差异特征。 ```python tips = sns.load_dataset("tips") fig, ax = plt.subplots(figsize=(9, 6)) sns.histplot( tips, x="total_bill", hue="sex", multiple="stack", element="bars", fill=True, common_norm=False, stat="probability", discrete=False, shrink=.8, alpha=.6, legend=True, ax=ax ) ax.set_title('按性别划分总账单金额分布') ax.set_xlabel('总账单($)') ax.set_ylabel('占比') plt.tight_layout() plt.show() ``` 上述实例中加载了一个内置的数据集,并按照顾客性别属性进行了分别计数处理后再作图表示出来[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值