Matplotlib学习

前言

在B站上把莫烦的Matplotlib教学视频刷一遍

正文

一、

首先是Matplotlib的基本用法

import matplotlib.pyplot as plt
import numpy as np
#%matplotlib auto
#%matplotlib qt5
x = np.linspace(-1,1,50)
y = 2*x+1

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

首先上述代码如果是在jupyter notebook中执行的,那么注释掉的两行就要至少放一行在这里,才会出现独立的图片,否则会是内嵌在jupyter notebook里;

当然,如果是单独运行一个py文件,那么上述这两行就不能写上去,否则要报错;

二、

接着是figure的使用方法,figure是设定指定窗口来画图,多个figure有多个图片,也可以在一个figure里画好几条线

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

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

plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)
#plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.show()

 

表示两个figure生成两个图片,其中第二个图片设定为序号3,并且长和宽也指定

同样,当我需要在一个图片里放两条线时,只需

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

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

plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.show()

三、

坐标轴修改

首先我们看一下怎样限定x和y轴的坐标范围:

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.xlim((-1,2))
plt.ylim((-2,3))


plt.show()

————————————————————————————————————————

接着看看对坐标轴刻度说明进行修改

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('I am x')
plt.ylabel('I am y')

new_ticks= np.linspace(-1,2,4)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3,],
           [r'$really bad$',r'$bad alpha$',r'$normal$',r'$good$' ,r'$really good$'])
plt.show()

xticks和yticks有两个返回值,一个是刻度,一个刻度标签

 

————————————————————————————————————————————————————————

 对坐标轴位置、刻度位置进行修改

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('I am x')
plt.ylabel('I am y')

new_ticks= np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3,],
           [r'$really bad$',r'$bad alpha$',r'$normal$',r'$good$' ,r'$really good$'])

ax = plt.gca()
#隐藏顶部和右边两条轴
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#设置坐标轴上的数字显示的位置,top:显示在顶部 bottom:显示在底部,默认是none ax.xaxis.set_ticks_position(
'bottom') ax.yaxis.set_ticks_position('left') #把底部的轴移动到竖轴的0位置;把竖直的轴移动到横轴的0位置 ax.spines['bottom'].set_position(('data',0)) ax.spines['left'].set_position(('data',0)) plt.show()

解释 ax = plt.gca()

在matplotlib的图中,默认有四个轴,两个横轴和两个竖轴,可以通过ax = plt.gca()方法获取,gca是‘get current axes’的缩写,获取图像的轴,总共有四个轴top、bottom、left和right。

 三、

图例

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('I am x')
plt.ylabel('I am y')

new_ticks= np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3,],
           [r'$really bad$',r'$bad alpha$',r'$normal$',r'$good$' ,r'$really good$'])

l1, = plt.plot(x,y1,label='up')
l2, = plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label='down')
plt.legend(handles=[l1,l2],labels=['aaa','bbb'],loc='best')
plt.show()

loc参数是图例的位置,还有很多,例如upper right,upper down等,

但是这里有一个很奇怪的地方,假如l1 = plt.plot(x,y1,label='up'),也就是去掉,后,图例就显示不成功了,但是如果lengend参数较简单,例如只有一个loc,那也会成功。

四、注释

x = np.linspace(-3,3,50)
y = 2*x+1
plt.figure(num=1,figsize=(8,5),)
plt.plot(x,y,)

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')
#把底部的轴移动到竖轴的0位置;把竖直的轴移动到横轴的0位置
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))


x0 = 1
y0 = 2*x0 + 1
#画一条竖线 plt.scatter(x0,y0,s=50,color='b') plt.plot([x0,x0],[y0,0],'k--',lw=2.5) #method 1 plt.annotate(r'$2x+1=%s$'% y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points', fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')) #method 2 ############### plt.text(-3.7,3,r'$This is the same text. mu sigma_i alpha_t$', fontdict={'size':16,'color':'r'}) plt.show()

method1里面,xytext表示注释离点的坐标

人生苦短,何不用python
原文地址:https://www.cnblogs.com/yqpy/p/11106405.html