【最简单的python画折线图】半封装式代码画折线图,防止写重复代码

一、为什么要写这个代码

很多时候画散点的折线图时,总是忘记代码细节怎么写,于是就想不如花点时间写几个函数,把画图的功能封装一下,下次画图这部分代码就能与其他代码隔离开来。使用者无需过多关注内部细节,只用关心数据是什么就ok

注:如果想自己改造函数的内部也是非常简单的,需要改造的部分旁都标注了这部分函数参数的参考链接。

二、画折线图的几个函数

看代码,一看就知道在写什么

#参考
# https://zhuanlan.zhihu.com/p/234740372
#https://blog.csdn.net/daybreak___/article/details/107752519
import numpy as np  # 加载数学库用于函数描述
import matplotlib #用 matplotlib 来进行 python 画图
import matplotlib.pyplot as plt
from matplotlib import style

#初始化折线图
def initLineChart(title="折线图标题",xlabel='x轴标签',ylabel='y轴标签'):
    style.use('ggplot')  # 折线图风格 默认加载'ggplot'风格
    plt.title(str(title))  # 折线图标题
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示汉字
    plt.xlabel(str(xlabel))  # x轴标题
    plt.ylabel(str(ylabel))  # y轴标题
    pass

#折线图中的一条线
def drawLineChart(x,y,inter=1,marker='o',markersize=3):
    if len(x) != len(y):
        print("输入的x,y长度不匹配")
        return False
    #对x,y进行等间隔采样,采样间隔为inter
    x = x[0:len(x):inter]
    y = y[0:len(y):inter]
    # 绘制折线图,添加数据点,设置 点的性质marker, 点的大小 makersize
    line = plt.plot(x, y, marker=marker, markersize=markersize)  
    
    # plt.text()函数用于设置文字说明 设置数据点的标签位置及大小 
        #具体设置参考参考 : https://blog.csdn.net/TeFuirnever/article/details/88947248
        # 坐标(a,b)
        # string为坐标的文字说明
        # ha horizontalalignment是水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
        #va verticalalignment是垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
        #xycoords选择指定的坐标轴系统
        #arrowprops #箭头参数,参数类型为字典dict
        #bbox给标题增加外框 
    for a, b in zip(x, y):
        plt.text(a, b, s=b, ha='center', va='bottom', fontsize=10)  
    return line

#创建图例 plt.legend()
# 参考:https://zhuanlan.zhihu.com/p/111108841
#eg:plt.legend(handles=[line1, line2], labels=['girl购物欲望','boy购物欲望'], loc='best')
def make_LineChart_Show(lines,labels):
    plt.legend(handles=lines,labels=labels, loc='best')
    plt.show()  # 显示折线图
    pass

三、封装后的使用

x = [6, 24, 48, 72]
y1 = [87, 174, 225, 254]
y2 = [24, 97, 202, 225]
y3 = [110, 138, 177, 205]
y4 = [95, 68, 83, 105]
y5 = [72, 74, 76, 67]

initLineChart()
line1, = drawLineChart(x,y1) #这里一定要加这个,
line2, = drawLineChart(x,y2)
line3, = drawLineChart(x,y3)
line4, = drawLineChart(x,y4)
line5, = drawLineChart(x,y5)

make_LineChart_Show([line1,line2,line3,line4,line5],['标签一', '标签二', '标签三', '标签四', '标签五'])

实际效果如下:

在这里插入图片描述

补充

1.如何对一个list进行等间隔采样——使用切片即可

参考:https://blog.csdn.net/ICQQ123/article/details/103934858

list = [1,2,3,4,5,6]
n = len(list)
inter = 2 # 间隔
list_2 = list[0:n:inter]
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值