matplotlib plot 分组_【Python学统计】matplotlib函数与单变量画图

博客介绍了使用画图包绘制数据分析领域基础图形,如折线图、直方图、箱型图等。还展示了单变量统计分析画图,包括线形图、散点图、核密度图等多种图形的绘制,以及分组条形图的分组绘制方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c62176c31697e0456e4ba546a1d98b07.png

1. 三角函数图形

这里我们使用matplotlib画图包绘图。matplotlib可以方便地绘制数据分析领域的基础图形,比如折线图line chart、直方图histogram和箱型图boxplot等等。

1c8a4d61f5ec418124e94f581fa1107b.png
matplotlib LOGO
import matplotlib.pyplot as plt

import numpy as np

x = np.arange(0, 20, 0.1)

y = np.cos(x)

##这里使用和plot函数默认的坐标轴和图例
plt.plot(x, y)
Out[45]: [<matplotlib.lines.Line2D at 0x232e9af94f0>]

Cos(x)余弦函数结果如下图:

264288d86a84fe42c4f160c70f966e31.png
y = cos(x)

也可以逐步画图。并拼接多个图形.

##也可以逐步画图。并拼接多个图形
z = np.sin(x)
r = np.tan(x)

##设置画布的基础
fig, axs = plt.subplots(nrows=3, ncols=1)

#先画第一个图,cosx
axs[0].plot(x, y)
axs[0].set_ylabel('Cosine')

##再画第二个图,sinx
axs[1].plot(x, z)
axs[1].set_ylabel('Sine')

##再画第三个图,tanx
axs[2].plot(x, r)
axs[2].set_ylabel('Tangent')

plt.show()

画图结果如下:

6f76f9e290234b9334be9bfff476990b.png

2. 单变量统计分析画图

这里我们继续使用常见的学术画图包matplotlib,以及基于matplotlib创建的高级画图包seabornSeaborn致力于提供更高层和更简洁的画图函数,绘制美观且信息更加丰富的图片。

bb9882eb25b52c91976634cfb7bee6af.png
seaborn LOGO

2.1 线形图 line plot

##导入相关的包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as stats

x = np.random.randint(0,100, 100)
##折线图 line chart
plt.plot(x)

912c3612a8cf9dfa416a49070d1ad3dc.png
plt.plot(x)

2.2 散点图scatter plot

##散点图scatter plot
plt.plot(x, '.')

43ef0961214363ff5cc1be1875ea0d5a.png
plt.plot(x, &amp;amp;amp;amp;#39;.&amp;amp;amp;amp;#39;)

2.3 直方图 histogram

##直方图
x=np.random.randn(1000)
plt.hist(x, bins=20)

778185973e8afc6c2b28b8518c7c700d.png
plt.hist(x, bins=20)

2.4 核密度图kdensity

核密度图可以看成是更加平滑的直方图,反应的是随机变量在某个区间内取值的概率。

##kdensity plot
sns.kdeplot(x) ##这个x是2.1.3中的x

dafa461388cd78b4a35e7e41667cb1b4.png
sns.kdeplot(x)

2.5 CDF累积分布函数图

学过概率论的同学,想必都会记得这两个函数,一个是PDF,一个是CDF。CDF , cumulative distribution function,又叫累积分布函数,是PDF概率密度函数的积分,可以完整地展示一个随机变量X的概率分布。

##CDF
plt.plot(stats.cumfreq(x, 30)[0])

6531f221da269965a8b2d1d795b2dd19.png
plt.plot(stats.cumfreq(x, 30)[0])

2.6 Boxplot箱型图

##boxplot
plt.boxplot(x, sym='.') ##离群值用.标记

4b195c9ce0fba95a76c161f22d257030.png
plt.boxplot(x, sym=&amp;amp;amp;amp;#39;.&amp;amp;amp;amp;#39;)

2.7 Violin小提琴图

箱型图boxplot + 核密度估计图,就可以生成violin小提琴图。小提琴图的横轴是箱型图的画法,但是纵轴变成了核密度估计图。

##violin
data1 = stats.norm.rvs(size=(1000))
df1 = pd.DataFrame(data1)
sns.violinplot(df1)

df0aa339d821d4af783c07a1f0cb7dfe.png
sns.violinplot(df1)

2.8 Bar chart 饼图

##bar chart
textlbl = 'A', 'B', 'C', 'D'
pencentage = [20, 30, 10, 40]
offsets = (0, 0.1, 0, 0.05)
plt.pie(pencentage, explode=offsets, labels=textlbl)

424cf45a95b985be7257aa5eac05f2b0.png
plt.pie(pencentage, explode=offsets, labels=textlbl)

2.9 Grouped bar chart 分组条形图

分组条形图可以先分组,在画出每组内部的条形图。这里我们用pandas中的简洁画法。

##grouped bar chart
df1 = pd.DataFrame(np.random.randint(0, 100, (10, 3)), columns = ['A', 'B', 'C'])
df1                   
df1.plot(kind='bar')

03ba92b4bf202bd877d6fd59430fe5bc.png

References

  1. matplotlib.org/tutorials
  2. seaborn: User guide and tutorial

-----全文结束-----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值