IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> matplotlib入门(1) -> 正文阅读

[Python知识库]matplotlib入门(1)

matplotlib入门(1)

? 简介:

matplotlib.pyplot包含一系列类似MATLAB中绘图函数的相关函数。每个matplotlib.pyplot中的函数对当前的图像进行一些修改,例如:产生新的图像,在图像中产生新的绘图区域,在绘图区域中画线,给绘图加上标记,等matplotlib.pyplot会自动记住当前的图像和绘图区域,因此这些函数会直接作用在当前的图像上。

? 导入包:

在实际的使用过程中,常常以plt作为matplotlib.pyplot 的省略

import numpy as np
import matplotlib as plt

一.

1.plt.show()函数

默认情况下,matplotlib.pyplot不会直接显示图像,只有调用plt.show()函数时,图像才会显示出来。plt.show()默认是在新窗口打开一幅图像,并且提供了对图像进行操作的按钮。

ipython命令行魔法命令

使用这些魔法命令,在jupyter notebook中不用plt.show()也可以显示图片

image-20210819100809398

不过在实际运用中,还是习惯用plt.show()

👉这里还有个博主的总结

? 里面说%matplotlib inline适合导出为markdown

? 很奇怪,为啥我啥也没加,也没有用plt.show()就能绘图啊

image-20210819104156260

这和我用了%matplotlib inline之后的效果一样

image-20210819104615562

%matplotlib notebook

这个好用!可以生成可交互的图片

image-20210819104404322

image-20210819104957512

弊端:

image-20210819110258964

确实是这样子,我两个图到一起去了

image-20210819110650988

? 我用%matplotlib auto好像也是这个效果,而且也会两个图到一起去

image-20210819104714528

还有个老外的很棒的总结

? image-20210819110234855

2.plt.plot()函数

基本用法

指定x和y:plt.plot(x,y)

①默认参数 x为0~N-1, plt.plot(y)

x可以默认不写,下面例子,列表的索引会作为x的取值,而列表中的值作为y的取值

? 但是,当绘制多条曲线时,各条曲线的x值不能省略!!!(见后文)

plt.show([1,2,3,4])

? 图片在上面plt.show()那里

plt.plot([1,29,19])

x是索引0,1,2

②x,y都给定

plt.plot([1,2,3,4],[1,4,9,16])

image-20210819111630290

? 如果用plt.show(),那就会直接显示图片,内存地址不会显示

image-20210819111717938

③指定x、y轴名称

plt.plot([1,29,19])
plt.ylabel('y')
plt.xlabel('x')

image-20210819111216054

指定中文名称

直接把刚刚的改成x轴,y轴,会发现显示不出来

image-20210819111303770


④字符参数

常用颜色字符参数
字符颜色
’b’blue
‘g’green
‘r’red
‘c’cyan,青色
‘m’magenta,品红
k’black
‘w’white
‘y’yellow
类型字符参数
字符类型字符类型
‘-’实线‘–’虚线
‘-.’虚点线‘:’点线
‘.’‘,’像素点
‘o’(里面是字母o)圆点‘v’下三角点
‘^’上三角点‘<’左三角点
‘>’右三角点‘1’下三叉点
‘2’上三叉点‘3’左三叉点
‘4’右三叉点‘s’正方点
‘p’五角点‘*’星形点
‘h’六边形点1‘H’六边形点2
‘+’加号点‘x’乘号点
‘D’实心菱形点‘d’瘦菱形点
‘_’横线点
例如:红色圆点
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

image-20210819112900138

青色乘号点

image-20210819113038702

⑤显示范围

由前面的例子可以看出,第一个点和最后一个点都在图像的边缘,所以要改变轴的显示范围

axis函数

语法:plt.axis([xmin,xmax,ymin,ymax])

plt.plot([1,2,3,4],[1,4,9,16],'mo--')
plt.axis([-1,6,-1,20])
plt.show()

image-20210819113535608

注:

? 格式控制的几个参数的位置可以随意,如'mo--''m--o'--mo等价

⑥传入numpy数组

传入numpy数组比传入列表更常用

? In fact,传入的即使是列表,matplotlib也会在内部将其转化为数组进行处理

t=np.arange(0.,5.,0.2)
#从0到4.8,步长为0.2(5是开区间,左闭右开取不到5)
plt.plot(t,2*t,'g-.')
plt.show()
image-20210819121638202
多条线画在一个图里面

直接在plt.plot里面加就好了

t=np.arange(0.,5.,0.2)
#从0到4.8,步长为0.2(5是开区间,左闭右开取不到5)
plt.plot(t,2*t,'g-.',2*t,t**2,'b_')
plt.show()

image-20210819121913462

t=np.arange(0.,5.,0.2)
#从0到4.8,步长为0.2(5是开区间,左闭右开取不到5)
plt.plot(t,2*t,'g-.',2*t,t**2,'b_',0.5*t,t**3,'ks')
plt.show()

image-20210819122114456

⑦线条属性

字符参数那里是通过字符串来控制线条属性,其实可以用关键字来调节属性

  • linewidth调节线条宽度
  • color调节线条颜色
x=np.linspace(-np.pi,np.pi)#从-3.14到3.14
y=np.sin(x)
plt.plot(x,y,linewidth=4,color='c')
plt.show()

image-20210819124642706

⑧用plt.plot()的返回值来设置线条属性

plot()函数返回值返回的是Line2D对象组成的列表,每个对象代表输入的一对组合,如:

  • line1,line2为两个Line2D对象
x=np.linspace(-np.pi,np.pi)#从-3.14到3.14
y=np.sin(x)
line1,line2=plt.plot(x,y,'r',x,y+1,'m')
#对line1进行调整
#antialiased 抗锯齿,改成False之后线条就变得没有那么光滑,变得比较毛糙
line1.set_antialiased(False)
plt.show()

image-20210819161941938

  • lines是3个line2D对象组成的列表
lines=plt.plot(x,y,'r',x,y+1,'m')
lines

image-20210819162209519

可以看出lines是一个列表

**此时无法直接对列表进行修改属性的操作!**若直接操作会报错!

image-20210819162312816

那放入列表就不能操作了吗?非也

加上索引就取出对象了吖!??

lines[0].set_antialiased(False)

image-20210819162456368

⑨plt.setp()修改线条性质

这个方法比较方便

x=np.linspace(-np.pi,np.pi)#从-3.14到3.14
y=np.sin(x)
line=plt.plot(x,y)
#默认是蓝色
#第一个参数是要修改的对象
plt.setp(line,color='g',linewidth=10)

image-20210819162907151

还可以写成下面这种类似于matlab风格的形式

plt.setp(line,'color','g','linewidth',10)

image-20210819163046662

3.子图

figure

figure()函数会产生一个指定编号为num的图:plt.figure(num)

若num为1,可以省略,因为plt默认产生一幅图

subplot

使用subplot可以在一幅图中生成多个子图,其参数为:plt.subplot(numrows,numcols,fignum)

numrows*numcols<10,中间逗号可以省略,如plt.subplot(211)就是plt.subplot(2,1,1)

? 意思是2行1列,画其中的第一张图

#计算函数
def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)
t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)
#plt.figure生成一张空白图,生成尺寸为10?15的空白图
plt.figure(figsize=(10,15))
#两行一列 画第一个子图
plt.subplot(211)
#子图一中包含两张图, 其中第二个用的是黑色,默认实线
plt.plot(t1,f(t1),'bo',t2,f(t2),'k')

#两行一列,画第二个子图
plt.subplot(212)
plt.plot(t1,-f(t1),'c--')

image-20210819170553591

#计算函数
def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)
t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)
#plt.figure生成一张空白图,生成尺寸为10?15的空白图
plt.figure(figsize=(10,10))
#两行一列 画第一个子图
plt.subplot(231)
#默认实线
plt.plot(t1,f(t1),'bo',t2,f(t2),'k')
plt.subplot(233)
plt.plot(t1,-f(t1),'c--')
#两行一列,画第二个子图
plt.subplot(235)
plt.plot(t1,-f(t1),'c--')

image-20210819170841230

二.遇到的问题

1.导包

一开始导包的时候写成了import matplotlib as plt

应该写成import matplotlib.pyplot as plt

image-20210819101333754

2.下载图片

用%matplotlib atuo或%matplotlib notebook弄出来的可交互图片有个下载按钮,但我点出来就是一个空白网页…无反应

image-20210819110804780

目前还不知道为啥不能下载

3.plt.plot多个返回值那里

  • 我如果用线条属性linewidth,color就会报这种错

image-20210819130739142

  • 但是如果我用字符参数来控制属性就不会报错

image-20210819130830809

  • 还有,一条是不会报错的

image-20210819163413231

🤨🤨🤨?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:03:18  更:2021-08-20 15:03:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:15:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码