[Python笔记]用matplotlib绘图

本文介绍了使用numpy和matplotlib库在Python中进行基础和进阶图像绘制的方法,包括设置画布大小、坐标轴标签、图像范围、添加标题、图例、多条曲线绘制、多子图以及不连续函数的处理。还讲解了where函数在条件运算中的应用。
摘要由CSDN通过智能技术生成

基础绘图:画出默认图像

准备工作:linspace采样构造数组

import numpy as np
def f(x):
    return x**3                         
x = np.linspace(0, 1, 50)     # 在0~1中平均取50个点
y=f(x)                        # 操作一个元素的函数也可以操作整个数组,但math中的函数要用numpy替代

基础绘图:大致画画

import matplotlib.pyplot as plt
plt.plot(x,y)

绘图进阶:让图片更丰富

设置画布大小

plt.figure(figsize=[8,5])         # 在绘图之前设置画布大小,宽为 8 英尺,高为 5 英尺

标记x,y轴

plt.xlabel('x')                 # label on the x axis
plt.ylabel('y')                 # label on the y axix

图像范围

# 同时设置x和y轴图像范围
plt.axis([0, 3, -0.05, 0.6])     # [xmin, xmax, ymin, ymax]

# 单独设置x或y轴图像范围
plt.xlim(0,3)
plt.ylim(0,3)

图像标题

plt.title('My First Demo')

图例

plt.plot(t, y, 'b--',label='$t^2*exp(-t^2)$')    # 首尾的$用于转义,得到的是规范的公式
plt.legend()                                      # 这一行不可缺少

在一张图里同时绘制多条曲线(也可以一条一条绘制)

plt.plot(x, y1,'b-',x, y2,'ro')

多子图绘制

plt.subplot(121)                  # 一行两列,现在绘制第一张图
plt.plot(x,Y1,'r')

plt.subplot(122)                  # 一行两列,现在绘制第二张图
plt.plot(x,Y2,'b')

设置坐标轴刻度

x=[i for i in range(2000,2023)]
plt.xticks(x,rotation=45)        # 旋转45度,y轴刻度同理

保存图像

plt.savefig('test.png',dpi=100)
# 还可以保存为png,jpg,pdf,svg的格式
# dpi即分辨率,可由此控制图片的大小和清晰度

设置线的类型

plt.plot内可以添加若干参数,以对图像进行各种个性化设置,部分常用参数见下表:

颜色(color)

蓝色 b

绿色 g

红色 r

黄色 y

黑色 k

白色 w

蓝绿 c

红紫 m

RGB表示法 如 #2F4F4F

线型(linestyle)

实线 -

虚线 --

虚点线 -.

点线 :

点 .

点型(marker)

圆形 o

方形 s

加号 +

叉形 x

标记大小(markersize)

markersize=10

透明度(alpha)

alpha=0.5

绘制不连续函数

def H(x):
    return (0 if x < 0 else 1)
# 对于上述函数,如果x是数组,则会报错

# 补救方法一 多写一个函数
def H_lppo(x):
  r=x.copy()
  for i in range(len(x)):
    r[i]=H(x[i])
  return r
y=H_loop(x)

# 补救方法二 用where
def Hv(x):
  return np.where(x<0,0.0,1.0)

PS:展开讲讲where:

#接收一个参数,返回符合条件的下标
a=np.array([1,2,3,4,5])
idx=np.where(a>2)        # idx=array([2,3,4])
b=a[idx]                # b=array([3,4,5])

#接收三个参数,用于三目运算
y=np.array([1,2,3,4,5])  
y=np.where(y%2==0,y+1,y-1)# 将奇数转换为偶数,偶数转换为奇数(如果是偶数,则返回+1后的值,反之-1)

😍以上就是本文的全部内容,欢迎关注Lane,和我一起成长!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值