0

0

介绍python的matplotlib常用绘图函数

coldplay.xixi

coldplay.xixi

发布时间:2021-01-25 10:04:01

|

3360人浏览过

|

来源于CSDN

转载

介绍python的matplotlib常用绘图函数

免费学习推荐:python视频教程

matplotlib具有强大的绘图功能,但是语句琐碎,每次使用都需要一句一句书写未免太过麻烦。本文根据平时绘图经验总结了常用绘图函数,可以直接使用,非常方便

import matplotlib.pyplot as pltimport pandas as pdimport numpy as np
plt.rcParams['font.sans-serif']=['simhei']#用于正常显示中文标签plt.rcParams['axes.unicode_minus']=False#用于正常显示负号

1、利用含有多列数据的DataFrame表格绘图

def plot_cols(data,xlabel=None,ylabel=None,path_file=None,marker=True,len_xticks=10,save=False):
    """
    :param data:DataFrame,数据表格--行标题为横坐标,列标题为数据列
                Series,序列——行标题为横坐标,name为数据列
    :param xlabel: str,横坐标名称
    :param ylabel: str,纵坐标名称
    :param path_file: str,保存文件路径
    :param marker: bool,是否为每条线添加不同的标记
    :param len_xticks:int,横坐标显示的值个数
    :param save: bool,是否保存图片
    example:
        data=pd.DataFrame(np.random.random((100,3)),index=np.arange(100),columns=['a','b','c'])
        plot_cols(data,xlabel='指标',ylabel='指数')
    """
    data.index=data.index.astype(str)
    plt.figure(figsize=(12,8))
    markers=['.',',','o','v','^','<','>','1','2','3','4','s','p','*','h','H','+','x','D','d','|','_']#标记符号

    #如果是DataFrame表格形式,则画出多列;如果是Series,则画出单列
    if type(data) is pd.core.frame.DataFrame:
        #是否为每条线添加不同的符号
        if marker==False:
            for col in data.columns:
                plt.plot(data[col],marker='o',label=col)
        else:
            for col,marker_ in zip(data.columns,markers):
                plt.plot(data[col], marker=marker_, label=col)

    elif type(data) is pd.core.series.Series:
        plt.plot(data, marker='o', label=data.name)

    plt.legend(loc='best',fontsize='small')
    xticks=np.linspace(0,len(data),(len_xticks+1)).astype(int).tolist()[:-1]#被显示的横坐标刻度值的位置
    plt.xticks(data.index[xticks],rotation=270)
    plt.ylabel(ylabel,fontsize=15)
    plt.xlabel(xlabel,fontsize=15)
    plt.grid(True,alpha=0.2)
    if save==True:plt.savefig(path_file)if __name__=='__main__':
    x=np.arange(1,101)
    data = pd.DataFrame({'a':x*2+3,'b':x*3-4,'c':np.log(x)+9}, index=np.arange(100))
    plot_cols(data, xlabel='指标', ylabel='指数')

在这里插入图片描述

立即学习Python免费学习笔记(深入)”;

西安二手网
西安二手网

功能介绍:1:强大的用户管理面版2:分为无需注册的免费发布和VIP注册发布/管理两个系统功能3:注册简便,发布信息管理信息等都相当简单4:用户积分制度5:加入 4 个非常实用的道具(在后台设置道具参数) 标题变色道具 (改变标题颜色) 信息置顶道具 (能使发布信息置顶,使用个数越多,位置越高) 内容贴图道具 (可以发和信息相关的图片) 通过验证道具 (可不通过管理员审核,直

下载

2、将含有两列的DataFrame表格数据作为双轴图

def plot_twins(data,col1,col2,xlabel=None,ylabel1=None,ylabel2=None,len_xticks=10,figsize=(10,6),save_path=None):
    """将含有两列的DataFrame表格数据作为双轴图
    :param data: DataFrame,含有两列的DataFrame表格数据
    :param col1: str,左图列标题
    :param col2: str,右图列标题
    :param xlabel: str,横轴标题
    :param ylabel1: str,左y轴标题
    :param ylabel2: str,右y轴标题
    :param len_xticks: int,显示的刻度个数
    :param figsize: turple,图大小
    :param save_path: str,图片保存路径。默认为None,不保存图片
    :return:
    example:
        x=np.arange(0,100)
        data=pd.DataFrame({'销售额(元)':3*x+np.random.random(100)*100,'增长率(%)':np.random.random(100)},index=pd.date_range('2015-01-23',periods=100,freq='D'))
        plot_twins(data,col1='销售额(元)',col2='增长率(%)',xlabel=None,ylabel1='销售额(元)',ylabel2='增长率(%)')
    """
    fig=plt.figure(figsize=figsize)#创建一块总画布
    # 将画板分为四行四列共16个单元格,(0, 0)表示从第一行第一列即第一个单元格开始画图,将第一行的三个单元格作为一个画块作画
    ax=plt.subplot2grid((1,1),(0,0),rowspan=1,colspan=1)

    plt.plot(data[col1],label=col1,color='r',marker='^')
    ax.legend(loc='upper right')#用于显示画布ax的图,切记用 loc= 表示位置
    ax.set_ylabel(ylabel1)
    xticks=np.linspace(0,len(data),(len_xticks+1)).astype(int).tolist()[:-1]#被显示的横坐标刻度值的位置
    ax.set_xticks(data.index[xticks])
    plt.xticks(rotation=270)

    twin=ax.twinx()
    plt.plot(data[col2],label=col2,color='y',marker='o')
    twin.legend(loc='upper left')
    twin.set_ylabel(ylabel2)
    ax.set_xlabel(xlabel)
    ax.grid(True,alpha=0.2)
    if save_path!=None: plt.savefig(save_path)if __name__=='__main__':
        x=np.arange(0,100)
        data=pd.DataFrame({'销售额(元)':3*x+np.random.random(100)*100,'增长率(%)':np.random.random(100)},index=pd.date_range('2015-01-23',periods=100,freq='D'))
        plot_twins(data,col1='销售额(元)',col2='增长率(%)',xlabel=None,ylabel1='销售额(元)',ylabel2='增长率(%)')

在这里插入图片描述

3、将DataFrame表格中的多列数据绘制成多个图

def plot_figs(data,xlabel=None,ylabels=None,save_path=None,len_xticks=5,length=10,width=3,intervals=1):
    """
    将DataFrame表格中的多列数据绘制成多个图
    :param data:DataFrame,含有多列的表格
    :param xlabel:str,横轴标题
    :param ylabels:list,各个图的纵轴标题
    :param path_save:str,图片保存路径。默认为None,不保存图片
    :param len_xticks: int,显示的刻度个数
    :param length:int,画板长度
    :param width:int,图画宽度
    :param intervals:int,图画之间间隔距离
    :return:
    example:
        data=pd.DataFrame(np.random.random((100,3)),index=np.arange(100),columns=['a','b','c'])
        plot_figs(data,xlabel='标号',ylabels=['a','b','c'])
    """

    cols=data.columns
    num_fig = len(data.columns)
    fig = plt.figure(figsize=(length, 4*num_fig))  # 创建一块总画布
    for i in range(0,num_fig):
        #i=2

        ax = plt.subplot2grid((num_fig*(width+intervals), 1), (i*(width+intervals), 0), rowspan=width,
                               colspan=1)  # 将画板分为四行四列共16个单元格,(0, 0)表示从第一行第一列即第一个单元格开始画图,将第一行的三个单元格作为一个画块作画

        ax.plot(data[cols[i]], label=cols[i])
        ax.legend(loc='upper right')  # 用于显示画布ax1的图,切记用 loc= 表示位置
        if ylabels!=None:ax.set_ylabel(ylabels[i])
        if xlabels!=None and i==(num_fig-1):ax.set_xlabel(xlabel)
        xticks = np.linspace(0, len(data), (len_xticks + 1)).astype(int).tolist()[:-1]  # 被显示的横坐标刻度值的位置
        ax.set_xticks(data.index[xticks])
        plt.grid(True,alpha=0.2)
    if save_path != None: plt.savefig(save_path)if __name__=='__main__':
    data=pd.DataFrame(np.random.random((100,3)),index=np.arange(100),columns=['a','b','c'])
    plot_figs(data,xlabel='标号',ylabels=['a','b','c'])

在这里插入图片描述

相关免费学习推荐:python教程(视频)

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

123

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

33

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

85

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

20

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

47

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 4.1万人学习

Django 教程
Django 教程

共28课时 | 3.2万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号