Matplot基本使用

基本流程

先介绍一下matplotlib画图的基本流程

import matplotlib.pyplot as plt #首先导入matplotlib画图包
import numpy as np #导入numpy库用来产生数据

#产生数据
x = np.linspace(-2, 2, 100) #在-2到2之前取100个数建立一维数组
y = x**2 + 1

#画图主要步骤
plt.figure() #产生窗口(可以设置具体属性,当不用设置时,可省略)
plt.plot(x, y) #画图,x为横坐标,y为纵坐标
plt.show() #显示(要有这个,才能最终显示出图片)

在这里插入图片描述

具体介绍

接下来具体介绍一下基本流程中用到的函数

  1. plt.figure()
plt.figure(num=3, figsize=(8, 5))
num:  指定当前的figure的序号,之前默认是由figure1开始每有一个新的窗口便加一,如:figure1、
figure2、figure3....

figsize: 指定窗口的大小,例如figsize=(8, 5)则窗口横向为8个单位大小,纵向为5个单位大小。

注意:plt.figure()后面跟的画图操作都是作用于这个窗口的,除非新的plt.figure()出现。
  1. plt.plot()
plt.plot(x, y, color="red", linewidth=1, linestyle="--")
color: 指定画图的颜色,如“red”为红色。
linewidth: 指定线的粗细。
linestyle: 指定画出的样式,如“-”为实线, “--”为虚线。

在这里插入图片描述

其它设置

  1. 设置坐标轴的名字,范围,和间隔(包括将数字替换为其它文字)
#设置坐标轴的名字
plt.xlabel("X") #设置横向坐标轴的名字为X
plt.ylable("Y") #设置纵向坐标轴的名字为Y

#设置坐标轴的范围
plt.xlim((-1,1)) #设置横向坐标轴的范围为-1到1
plt.ylim((-1,8))

#设置坐标轴的间隔
new_xticks = np.linspace(-2,2,5) #产生一个-2到2之间均匀分布的5个数字作为一维数据
plt.xticks(new_xticks) #将产生的一维数组作为横向坐标轴的坐标值

#将坐标轴的刻度改变为其它标识
plt.yticks([1, 3, 5], ["$bad$", "OK", "good"])

plt.xlabel("name"): 可以设置坐标轴的名字
plt.xlim((-5,5)) :设置坐标轴的取值范围
plt.xticks([-1, -.05, 0]): 用列表或一维数组设置坐标走的刻度
plt.yticks([-1,-0.5, 0], ["$bad$", "OK", "good"]) :将-1对应的值换为bad,如果字符串前后加$则会改变其样式。

在这里插入图片描述

  1. 设置坐标轴的位置
ax = plt.gca()#意为 get current axis,得到当前的坐标轴信息
ax.spines[“top"].set_color("none") #设置上边框颜色为白色
ax.spines[“right"].set_color("none") #设置右边框颜色为白色

在这里插入图片描述

  1. 设置坐标轴对应的框边
ax.xaxis.set_ticks_position("bottom") #设置横坐标轴对应下边框
ax.yaxis.set_ticks_position("left") #设置纵坐标轴对应左边框
  1. 设置坐标轴的位置
ax.spines["bottom"].set_position(("data", 0)) #设置下边框的位置在左边框的零刻度处
ax.spines["left"].set_position(("data", 0)) #设置左边框的位置在下边框的零刻度处

在这里插入图片描述

给图像做标注

  1. 给对应的绘制数据一个label
#最简单的方法(直接在plot中加label属性,plt.legend()直接写,不加参数)
x = np.linspace(-2,2,50)
y1 = 2*x + 1
y2 = x**2 + 1

plt.plot(x, y1, color="red", label="First Line")
plt.plot(x, y2, color="blue", label="Sec Line")
plt.legend()

在这里插入图片描述

#详细的方法(在plt.legend()直接加参数)
x = np.linspace(-2,2,50)
y1 = 2*x + 1
y2 = x**2 + 1

L1, = plt.plot(x, y1, color="red", label="First Line")
L2, = plt.plot(x, y2, color="blue", label="Sec Line")
plt.legend(handles=[L1,L2], labels=["first", "sec"], loc="best")

legend()中的参数:
handles: 后面跟着一个列表,列表的内容是需要标注的线,如L1, = plt.plot(x, y1, color=“red”, label=“First Line”),L1后面的逗号不可省略
labels:后面跟着一个列表,列表的内容是自定义的label
loc:接一个字符串,代表标注信息说明框的位置,如果是”best“则由程序自动挑选最合适的位置,”upper right"则为右上角
在这里插入图片描述

  1. 给图上的信息做标注
#先创建一个需要进行标注的点
x0 = 1
y0 = x0**2 + 1

plt.scatter([x0],[y0],color="red",s=15)#把点画出来
plt.plot([x0, x0],[0,y0], color="black",linewidth=0.8,linestyle="==")#过该点画一条垂直横轴的线

在这里插入图片描述

#给图上数据做标注
plt.annotate(r"$x^2 + 1 = %S$"%y0,xycoords="data",xy=(x0,y0),textcoords="offset points", xytext=(+30, -30),
arrowprobs=dict(arrowstyle="->", connectionstyle="arc3,rad=1))

在这里插入图片描述

annotate()的参数:
字符串:如代码中的r" x 2 + 1 = x^2 + 1 = %S x2+1="%y0,会把这个字符串显示在图像中
xycoords=“data”:以数值为依据,挑选字符串位置的相对原点
xy = (x0, y0):字符串的位置相对的原点位置
textcoords=”offset points":以相对坐标的方式,决定字符串的位置
xytext=(+30,-30):字符串的位置是相对于(x0,y0)的往右30个单位,往下30个单位。

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值