matplotlib绘图常用操作

本文介绍了如何使用matplotlib库在Python中绘制CDF、PDF曲线,箱图以及利用DataFrame创建柱状图,包括设置样式和处理数据的方法。

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

记录一下matplotlib的常用绘图,不用反复去百度了


1. CDF & PDF

from scipy import stats
import numpy as np

    # data是一个list,存放数据
res = stats.relfreq(data, numbins=30)
    # numbins是bin的个数,会影响统计的粗略程度
x = res.lowerlimit + np.linspace(0, 
                                res.binsize*res.frequency.size, 
                                res.frequency.size)
pdf = res.frequency
cdf = np.cumsum(res.frequency)

    # 绘制CDF曲线
plt.plot(x,cdf)
plt.ylabel('CDF', fontsize=18)
plt.xticks(fontsize=18)
plt.yticks(fontsize=18)
plt.show()

    # 绘制PDF柱状图(也可以绘制曲线,用plt.plot即可)
plt.bar(x, pdf, width=res.binsize)
plt.ylabel('PDF', fontsize=18)
plt.xticks(fontsize=18)
plt.yticks(fontsize=18)
plt.show()

2. 箱图

plt.boxplot([data1, data2], labels=['Data1', 'Data2'])
'''
    labels会自动变为xticks,无需legend处理
    设置 notch=True,箱图在中位线处变凹
    设置 vert=True,箱图变垂直
    设置 whis,上下限系数,默认为1.5
    设置 widths,箱图宽度
    设置 patch_artist=True,箱体是否有颜色填充
    设置 showmeans=True,显示平均值
    设置 showcaps=False,隐藏上下限的线条
    设置 showbox=False,隐藏箱体
    设置 showfliers=False,隐藏异常值
    另外还有一些绘图样式的设置,例如线型,点型等,暂不整理,随用随补
'''

另外附一个箱图计算函数

def anomaly_filter(series, threshold=1.5):
    series_sort = np.sort(series.copy())
    n = len(series)
    idx_Q1 = (n + 1) / 4
    idx_Q3 = (n + 1) * 3 / 4
    Q1 = series_sort[int(idx_Q1) - 1] * (1 - idx_Q1 + int(idx_Q1)) + series_sort[int(idx_Q1)] * (idx_Q1 - int(idx_Q1))
    Q3 = series_sort[int(idx_Q3) - 1] * (1 - idx_Q3 + int(idx_Q3)) + series_sort[int(idx_Q3)] * (idx_Q3 - int(idx_Q3))
    IQR = Q3 - Q1
    series_filtered = []
    for s in series:
        if Q1 - threshold * IQR <= s <= Q3 + threshold * IQR:
            series_filtered.append(s)
    return Q1 - threshold * IQR, Q1 + threshold * IQR, series_filtered

3. 柱状图

3.1. 直接用dataframe绘制柱状图

df.plot(kind='bar', color=color_list)
'''
    用index作为横坐标,columns作为label(需要plt.legend)
    color_list是一个存放颜色的list,给不同的columns赋颜色,多则取前,少则复用
    后续可以按照matplotlib的方法对图进行操作
'''
plt.xticks(rotation=0)    # 上述方法生成的柱状图通常横坐标是竖着的,可以通过这个方法转回来

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值