一、为什么要写这个代码
很多时候画散点的折线图时,总是忘记代码细节怎么写,于是就想不如花点时间写几个函数,把画图的功能封装一下,下次画图这部分代码就能与其他代码隔离开来。使用者无需过多关注内部细节,只用关心数据是什么就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进行等间隔采样,采样间隔为interx = x[0:len(x):inter]y = y[0:len(y):inter]# 绘制折线图,添加数据点,设置 点的性质marker, 点的大小 makersizeline = 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]


















