matplotlib

本篇博客将从易到难的阐述matplotlib的各种用法。
首先通过举一个例子,对matplotlib的用法有一个大致的了解。

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y=2*x+1
plt.plot(x,y)
plt.show()

上述代码中的linspace是从(-1,1)之间选取50个点用作横坐标。
注意在代码最后一定要加上plt.show()要不然图片不会显示出来。

运行结果如下:
在这里插入图片描述

1.figure的使用(控制图像显示在几个图片上)

使用plt.figure()来控制图像在几个图片上。

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y=2*x+1
y1=x**2

plt.figure()
plt.plot(x,y)


plt.figure()
plt.plot(x,y1)
plt.show()

想将图像显示在哪个图片上,就将那个图像在那个图片下面plot即可。然后多个figure的最后再show一下。

输出为:
figure1
在这里插入图片描述这样就会在两个图片上显示两个图象。

当然我们也可以在一个图片里面显示多个图像

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y1=2*x+1
y2=x**2
plt.plot(x,y1,color="red",linewidth=1.0,linestyle="--")
plt.plot(x,y2,color="blue",linewidth=1.0,linestyle="-")
plt.show()

代码的输出结果为:
在这里插入图片描述

2.设置坐标轴

1.可以使用xlabel与ylabel来设置坐标轴的名字

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)
y=x**2
plt.plot(x,y)
plt.xlabel("i am x")
plt.ylabel("i am y")
plt.show()

输出图片为:
在这里插入图片描述
上述代码就可以为两个坐标轴起上名字。

2.可以使用ticks来改变坐标轴的文字描述

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,1,50)
y=x
plt.plot(x,y)
plt.yticks([0,0.5,1],["realy bad","normal","good"])
plt.show()

上述代码中的yticks起到的作用就是将y坐标轴上的数字换成字符串。yticks中的两个列表参数中的对应关系反应原y值与现字符串的对应关系。

代码的输出结果为:在这里插入图片描述
3.改变坐标轴的位置

什么叫改变坐标轴的位置?观察上述的图像,每张图片都有四个边框。我们改变坐标轴的位置就是要把右边和上边的边框消失,然后把下边和左边的边框整到中间来。

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-5,5,100)
y=x
#这里面的gca就是get currant axis
ax=plt.gca()
#下面这两句代码就是把右边和上边的轴给弄透明
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
#下面两句代码就是把下边框选作x轴,左边框选作y轴
ax.xaxis.set_ticks_position("bottom")
ax.yaxis.set_ticks_position("left")
#将底下的边框移到y=0处,将左边的边框移动到x=0处
ax.spines["bottom"].set_position(("data",0))
ax.spines["left"].set_position(("data",0))
plt.plot(x,y)
plt.show()

输出为:
在这里插入图片描述

3.添加图例

import  matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y1=x+2
y2=x**2
plt.plot(x,y1,color="red",linewidth=1.0,linestyle="--",label="x+2")
plt.plot(x,y2,color="blue",linewidth=1.0,linestyle="-",label="x*x")
plt.legend(loc="best")
plt.show()

legend里面的loc=“best”的意思是让标注显示在没有数据的地方

代码的输出结果为:
在这里插入图片描述

4.添加标注

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2,2,50)
y=x
ax=plt.gca()
#这部分的代码和之前写的调整
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.xaxis.set_ticks_position("bottom")
ax.yaxis.set_ticks_position("left")
ax.spines["left"].set_position(("data",0))
ax.spines["bottom"].set_position(("data",0))
plt.plot(x,y)
x0=1
y0=x0
#scatter是画点的
plt.scatter(x0,y0,color="red")
#下面这条语句就是画一条竖直的线,plot中的两组参数,第一组[x0,x0]是指两个点的横坐标都是x0,第二组[x0,0]是指两个点的纵坐标分别是y0和0
plt.plot([x0,x0],[y0,0],linestyle="--")
#下面就是对那个点的描述了
plt.annotate("x=y=1",xy=(x0,y0),xycoords="data",xytext=(+30,-30),textcoords="offset points",arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))

plt.show()

代码的输出为:
在这里插入图片描述
当然还有另外一种方式添加标注

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2,2,50)
y=x
ax=plt.gca()
#这部分的代码和之前写的调整
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.xaxis.set_ticks_position("bottom")
ax.yaxis.set_ticks_position("left")
ax.spines["left"].set_position(("data",0))
ax.spines["bottom"].set_position(("data",0))
plt.plot(x,y)
x0=1
y0=x0
#scatter是画点的
plt.scatter(x0,y0,color="red")
#下面这条语句就是画一条竖直的线,plot中的两组参数,第一组[x0,x0]是指两个点的横坐标都是x0,第二组[x0,0]是指两个点的纵坐标分别是y0和0
plt.plot([x0,x0],[y0,0],linestyle="--")
#下面就是对那个点的描述了
plt.annotate("x=y=1",xy=(x0,y0),xycoords="data",xytext=(+30,-30),textcoords="offset points",arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))
#下面这句话就是在坐标为(0.5,-1)的位置添加后面这句话,fontdict里面装的是对这句话格式的描述。
plt.text(0.5,-1,"this is what i want to say",fontdict={"size":"12","color":"red"})
plt.show()

代码的输出为:
在这里插入图片描述

5.散点图

我们使用scatter来绘制散点图

import matplotlib.pyplot as plt
import numpy as np
#生成1024个均值为0,方差为1的数字
X=np.random.normal(0,1,1024)
Y=np.random.normal(0,1,1024)
#np.arctan2()可以参照颜色图,根据位置计算出其颜色
plt.scatter(X,Y,c=np.arctan2(Y,X))
#下面两句代码限制x,y坐标轴的长度
plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.show()

代码的输出为:在这里插入图片描述

6柱状图

我们使用bar来描述柱状图

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(1,10,10)
y=x
plt.bar(x,y,facecolor="red",edgecolor="green")
plt.show()

代码的输出为:
在这里插入图片描述
当然也可以这样

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(1,10,10)
y1=x
y2=x
#下面的ha是水平对齐方式,va是竖直对齐方式
for X,Y in zip(x,y1):
    plt.text(X,Y+0.05,"%d"% Y,ha="center",va="bottom")

for X,Y in zip(x,y2):
    plt.text(X,-Y-0.05,"%d"% Y,ha="center",va="top")
plt.bar(x,+y1,facecolor="red")
plt.bar(x,-y2)
#把横纵坐标的尺度给弄没了
plt.yticks(())
plt.xticks(())
plt.show()

在这里插入图片描述

7.多合一显示

import matplotlib.pyplot as plt
import numpy as np
plt.figure()
#subplot里面的参数前两个表示将一个图片分成2x2个部分,下面的代码描述的图像放在第一个部分
plt.subplot(2,2,1)
x=np.linspace(-1,1,50)
y=x
plt.plot(x,y)

plt.subplot(2,2,2)
x=np.linspace(-1,1,50)
y=x**2
plt.plot(x,y)

plt.subplot(2,2,3)
x=np.linspace(-1,1,50)
y=x**3
plt.plot(x,y)

plt.subplot(2,2,4)
x=np.linspace(-1,1,50)
y=x**4
plt.plot(x,y)


plt.show()

代码输出为:在这里插入图片描述
当然使用subplot2grid也可以这样

import matplotlib.pyplot as plt
import numpy as np
plt.figure()
#这里面的参数,前两个代表将一幅图片分割成2x2个部分,ax1画的那部分是从(0,0)开始,列的宽度是1,行的宽度是2
ax1=plt.subplot2grid((2,2),(0,0),rowspan=1,colspan=2)
x=np.linspace(-1,1,50)
y=x
ax1.plot(x,y)


ax2=plt.subplot2grid((2,2),(1,0),rowspan=1,colspan=1)
x=np.linspace(-1,1,50)
y=x**2
ax2.plot(x,y)

ax3=plt.subplot2grid((2,2),(1,1),rowspan=1,colspan=1)
x=np.linspace(-1,1,50)
y=x
ax3.plot(x,y)
plt.show()

代码输出结果为:
在这里插入图片描述

  • 11
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值