python matplotlib画折线图
消灭BUG鸭 人气:0matplotlib简介
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。
而 Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的latex引擎绘制的数学公式)。
1、画折线图【一条示例】
import matplotlib.pyplot as plt import numpy as np x_axis_data = [1,2,3,4,5,6,7] #x y_axis_data = [68,69,79,71,80,70,66] #y plt.plot(x_axis_data, y_axis_data, 'b*--', alpha=0.5, linewidth=1, label='acc')#'bo-'表示蓝色实线,数据点实心原点标注 ## plot中参数的含义分别是横轴值,纵轴值,线的形状('s'方块,'o'实心圆点,'*'五角星 ...,颜色,透明度,线的宽度和标签 , plt.legend() #显示上面的label plt.xlabel('time') #x_label plt.ylabel('number')#y_label #plt.ylim(-1,1)#仅设置y轴坐标范围 plt.show()
运行,得到:
2、画折线图带数据标签
在画线代码之前加入这句代码:
for x, y in zip(x_axis_data, y_axis_data): plt.text(x, y+0.3, '%.00f' % y, ha='center', va='bottom', fontsize=7.5)#y_axis_data1加标签数据
总体代码如下:
import matplotlib.pyplot as plt import numpy as np x_axis_data = [1,2,3,4,5,6,7] #x y_axis_data = [68,69,79,71,80,70,66] #y for x, y in zip(x_axis_data, y_axis_data): plt.text(x, y+0.3, '%.00f' % y, ha='center', va='bottom', fontsize=7.5)#y_axis_data1加标签数据 plt.plot(x_axis_data, y_axis_data, 'b*--', alpha=0.5, linewidth=1, label='acc')#'bo-'表示蓝色实线,数据点实心原点标注 ## plot中参数的含义分别是横轴值,纵轴值,线的形状('s'方块,'o'实心圆点,'*'五角星 ...,颜色,透明度,线的宽度和标签 , plt.legend() #显示上面的label plt.xlabel('time') #x_label plt.ylabel('number')#y_label #plt.ylim(-1,1)#仅设置y轴坐标范围 plt.show()
3、画多条折线图:
import matplotlib.pyplot as plt import numpy as np #epoch,acc,loss,val_acc,val_loss x_axis_data = [1,2,3,4,5,6,7] y_axis_data1 = [68.72,69.17,69.26,69.63,69.35,70.3,66.8] y_axis_data2 = [71,73,52,66,74,82,71] y_axis_data3 = [82,83,82,76,84,92,81] #画图 plt.plot(x_axis_data, y_axis_data1, 'b*--', alpha=0.5, linewidth=1, label='acc')#' plt.plot(x_axis_data, y_axis_data2, 'rs--', alpha=0.5, linewidth=1, label='acc') plt.plot(x_axis_data, y_axis_data3, 'go--', alpha=0.5, linewidth=1, label='acc') plt.legend() #显示上面的label plt.xlabel('time') plt.ylabel('number')#accuracy #plt.ylim(-1,1)#仅设置y轴坐标范围 plt.show()
运行,得到:
4、画多条折线图分别带数据标签:
import matplotlib.pyplot as plt import numpy as np #epoch,acc,loss,val_acc,val_loss x_axis_data = [1,2,3,4,5,6,7] y_axis_data1 = [68.72,69.17,69.26,69.63,69.35,70.3,66.8] y_axis_data2 = [71,73,52,66,74,82,71] y_axis_data3 = [82,83,82,76,84,92,81] #画图 plt.plot(x_axis_data, y_axis_data1, 'b*--', alpha=0.5, linewidth=1, label='acc')#' plt.plot(x_axis_data, y_axis_data2, 'rs--', alpha=0.5, linewidth=1, label='acc') plt.plot(x_axis_data, y_axis_data3, 'go--', alpha=0.5, linewidth=1, label='acc') ## 设置数据标签位置及大小 for a, b in zip(x_axis_data, y_axis_data1): plt.text(a, b, str(b), ha='center', va='bottom', fontsize=8) # ha='center', va='top' for a, b1 in zip(x_axis_data, y_axis_data2): plt.text(a, b1, str(b1), ha='center', va='bottom', fontsize=8) for a, b2 in zip(x_axis_data, y_axis_data3): plt.text(a, b2, str(b2), ha='center', va='bottom', fontsize=8) plt.legend() #显示上面的label plt.xlabel('time') plt.ylabel('number')#accuracy #plt.ylim(-1,1)#仅设置y轴坐标范围 plt.show()
运行,得到:
附上形状,可与颜色搭配:
‘s’ : 方块状
‘o’ : 实心圆
‘^’ : 正三角形
‘v’ : 反正三角形
‘+’ : 加好
‘*’ : 星号
‘x’ : x号
‘p’ : 五角星
‘1’ : 三脚架标记
‘2’ : 三脚架标记
总结
加载全部内容