python绘制相频特性曲线_数据分析之Matplotlib和机器学习基础

本文详细介绍了Python数据可视化库Matplotlib的基础知识,包括如何绘制线性直线、抛物线、正弦曲线等不同类型的图表,以及如何设置网格线、坐标轴标签、图例和保存图片。此外,还讲解了使用Matplotlib与其他库如NumPy配合实现数据处理,并展示了如何在图形中显示中文。文章进一步讨论了线性回归的基础,包括线性回归模型的训练、评分和预测。最后,文章通过K-近邻算法(KNN)的实际应用,展示了其工作原理、欧几里得距离和一个简单的KNN分类案例。
摘要由CSDN通过智能技术生成

一、Matplotlib基础知识

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等

它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

1.Matplotlib中的基本图表包括的元素

x轴和y轴 axis

水平和垂直的轴线

x轴和y轴刻度 tick

刻度标示坐标轴的分隔,包括最小刻度和最大刻度

x轴和y轴刻度标签 tick label

表示特定坐标轴的值

绘图区域(坐标系) axes

实际绘图的区域

坐标系标题 title

实际绘图的区域

轴标签 xlabel ylabel

实际绘图的区域

2.hold属性

hold属性默认为True,允许在一幅图中绘制多个曲线;将hold属性修改为False,每一个plot都会覆盖前面的plot。

但是目前不推荐去动hold这个属性,这种做法(会有警告)。因此使用默认设置即可。

3.网格线

grid方法

使用grid方法为图添加网格线

设置grid参数(参数与plot函数相同)

.lw代表linewidth,线的粗细

.alpha表示线的明暗程度

4.axis方法

如果axis方法没有任何参数,则返回当前坐标轴的上下限

5.xlim方法和ylim方法

除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围

6.legend方法

两种传参方法:

【推荐使用】在plot函数中增加label参数

在legend方法中传入字符串列表

7.导入

importnumpy as npimportpandas as pdimportmatplotlib.pyplot as pltfrom pandas importSeries,DataFrame%matplotlib inline"""%matplotlib作用:

1.是在使用jupyter notebook 或者 jupyter qtconsole的时候,才会经常用到%matplotlib,也就是说那一份代码可能就是别人使用jupyter notebook 或者 jupyter qtconsole进行编辑的。

2.而%matplotlib具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。

3.而我们在spyder或者pycharm实际运行代码的时候,可以直接注释掉这一句,也是可以运行成功的"""

1、包含单条曲线的图

注意:y,x轴的值必须为数字

"""plot() 函数绘制图形。

show()函数显示图形。"""

#1.绘制线性直线#y = 2*x

x=[1,2,3,4,5]

y=[2,4,6,8,10]

plt.plot(x,y)

plt.show()#结果

#y = 2x + 5

x = np.arange(1,11) #x的值

y = 2 * x + 5 #y的值

plt.title("Matplotlib demo") #图的标题

plt.xlabel("x axis caption") #x轴的名称

plt.ylabel("y axis caption") #y轴的名称

plt.plot(x,y) #画图

plt.show() #显示#结果

#2.绘制抛物线

x = np.arange(-np.pi,np.pi,0.5) #np.pi就是数学中的π:3.141596...

y = x**2plt.plot(x,y)

plt.show()#结果

#3.绘制正弦曲线图

x = np.linspace(-np.pi, np.pi, 256,endpoint=True) #从 −π 到 +π 等间隔的 256 个值

y = np.sin(x) #y是这256个值对应的正弦函数值组成的numpy数组,同理绘制余弦y = np.cos(x)

plt.plot(x,y)

plt.show()#结果

2、包含多个曲线的图

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

y=np.sin(x)#1.连续调用多次plot函数

plt.plot(x,y)

plt.plot(x+2,y+2)

plt.show()#结果

#2.也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线

plt.plot(x,y,x+3,y+3)

plt.show()#结果

3、将多个曲线图绘制在一个table区域中:对象形式创建表图

a=plt.subplot(row,col,loc) 创建曲线图

a.plot(x,y) 绘制曲线图

#一个区域中绘制2行2列,共4个图形#第一幅图:线形图

x = np.arange(0,10,5)

y= 2*x

ax1= plt.subplot(2,2,1) #2行2列这个区域块的第一个位置

ax1.grid()

ax1.plot(x,y)#绘图

#第二幅图:正弦图

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

y=np.sin(x)

ax2= plt.subplot(222) #2行2列这个区域块的第二个位置

ax2.plot(x,y) #绘图

#第三幅图:余弦图

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

y=np.cos(x)

ax3= plt.subplot(223) #2行2列这个区域块的第三个位置

ax3.plot(x,y) #绘图

#第四幅图:抛物线

x = np.arange(-np.pi,np.pi,0.5)

y= x**2ax4= plt.subplot(224) #2行2列这个区域块的第四个位置

ax4.plot(x,y) #绘图

#结果

4、网格线

参数:

- axis

- color:支持十六进制颜色

- linestyle: -- -. :

- alpha

"""网格线 plt.gride(XXX)

grid()常用参数:

b : 布尔值。就是是否显示网格线的意思。官网说如果b设置为None, 且kwargs长度为0,则切换网格状态。

which : 取值为'major', 'minor', 'both'。 默认为'major'。

axis : 取值为‘both’, ‘x’,‘y’。就是想绘制哪个方向的网格线。不过我在输入参数的时候发现如果输入x或y的时候,输入的是哪条轴,则会隐藏哪条轴

color : 这就不用多说了,就是设置网格线的颜色。或者直接用c来代替color也可以。c=r 红色, c=g 绿色 等等

linestyle :也可以用ls来代替linestyle, 设置网格线的风格,是连续实线,虚线或者其它不同的线条。 | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']

linewidth : 设置网格线的宽度"""

#1.绘制一个正弦曲线图,并设置网格

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

y=np.sin(x)

plt.grid(axis='both',c='r')

plt.plot(x,y)#结果

#2.绘制一个两行两列的曲线图阵,并设置网格

x=np.linspace(-np.pi,np.pi,100)

y=np.sin(x)

a1=plt.subplot(221)

a1.grid()

a1.plot(x,y)

a2=plt.subplot(222)

a2.grid()

a2.plot(x,y)

a3=plt.subplot(223)

a3.grid()

a3.plot(x,y)

a4=plt.subplot(224)

a4.grid()

a4.plot(x,y)#结果

5、图形中文显示

Matplotlib 默认情况不支持中文,我们可以使用以下简单的方法来解决:

SimHei.ttf 文件放在当前执行的代码文件中

importnumpy as npfrom matplotlib importpyplot as pltimportmatplotlib#fname 为 你下载的字体库路径,注意 SimHei.ttf 字体的路径

zhfont1 = matplotlib.font_manager.FontProperties(fname="SimHei.ttf")

x= np.arange(1,11)

y= 2 * x + 5plt.title("中文字体 - 测试", fontproperties=zhfont1)#fontproperties 设置中文显示,fontsize 设置字体大小

plt.xlabel("x 轴", fontproperties=zhfont1)

plt.ylabel("y 轴", fontproperties=zhfont1)

plt.plot(x,y)

plt.show()#结果

此外,我们还可以使用系统的字体

from matplotlib importpyplot as pltimportmatplotlib

a=sorted([f.name for f inmatplotlib.font_manager.fontManager.ttflist])for i ina:print(i)

打印出你的 font_manager 的 ttflist 中所有注册的名字,找一个看中文字体例如:STFangsong(仿宋),然后添加以下代码即可

plt.rcParams['font.family']=['STFangsong']

6、向 plot() 函数添加格式字符串来显示离散值

作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

字符描述

'-'

实线样式

'--'

短横线样式

'-.'

点划线样式

':'

虚线样式

'.'

点标记

','

像素标记

'o'

圆标记

'v'

倒三角标记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值