Matplotlib——基本用法

1.画一个简单的图

使用import导入模块matplotlib.pyplot,并简写成plt 使用import导入模块numpy,并简写成np

import matplotlib.pyplot as plt
import numpy as np

使用np.linspace定义x:范围是(-4,4);个数是20. 仿真一维数据组(x ,y)表示曲线.

x = np.linspace(-4,4,20)
y = x**2 + 1

使用plt.figure定义一个图像窗口. 使用plt.plot画(x ,y)曲线. 使用plt.show显示图像.

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

在这里插入图片描述

2.显示多张figure

matplotlib 的 figure 就是一个 单独的 figure 小窗口, 小窗口里面还可以有更多的小图片.
使用import导入模块matplotlib.pyplot,并简写成plt 使用import导入模块numpy,并简写成np

import matplotlib.pyplot as plt
import numpy as np

使用np.linspace定义x:范围是(0,5);个数是30. 仿真一维数据组(x ,y1)表示曲线1. 仿真一维数据组(x ,y2)表示曲线2.

x = np.linspace(0,5,30)
y1 = 2*x + 3
y2 = x**2 - 1

使用plt.figure定义一个图像窗口.编号为1,大小为(4, 3), 使用plt.plot画(x ,y1)曲线.

plt.figure(num = 1)
plt.plot(x, y1)

使用plt.figure定义一个图像窗口:编号为2;大小为(4, 3). 使用plt.plot画(x ,y2)曲线. 使用plt.plot画(x ,y1)曲线,曲线的颜色属性(color)为红色;曲线的宽度(linewidth)为1.0;曲线的类型(linestyle)为虚线. 使用plt.show显示图像.

plt.figure(num = 1,figsize=(4,3))
plt.plot(x, y1)

plt.figure(num = 2,figsize=(4,3))
plt.plot(x, y2) 
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')   #默认颜色是蓝色

plt.show()

在这里插入图片描述

3.坐标轴设置

使用import导入模块matplotlib.pyplot,并简写成plt 使用import导入模块numpy,并简写成np

import matplotlib.pyplot as plt
import numpy as np

使用np.linspace定义x:范围是(-5,5);个数是30. 仿真一维数据组(x ,y1)表示曲线1. 仿真一维数据组(x ,y2)表示曲线2.

x = np.linspace(-5,5,30)
y1 = 2*x + 1
y2 = x**2 - 1

使用plt.figure定义一个图像窗口. 使用plt.plot画(x ,y2)曲线. 使用plt.plot画(x ,y1)曲线,曲线的颜色属性(color)为红色;曲线的宽度(linewidth)为1.0;曲线的类型(linestyle)为虚线.

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

使用plt.xlim设置x坐标轴范围:(0, 5); 使用plt.ylim设置y坐标轴范围:(-5,15); 使用plt.xlabel设置x坐标轴名称:’x’; 使用plt.ylabel设置y坐标轴名称:’ y’;

plt.xlim(0,5)
plt.ylim(-5,15)
plt.xlabel('x')
plt.ylabel('y')

使用plt.xticks设置x轴刻度:范围是(-1,5);个数是5,使用plt.yticks设置y轴刻度以及名称:刻度为[-4, 0, 4, 9, 13];对应刻度的名称为[‘really bad’,’bad’,’normal’,’good’, ‘really good’]. 使用plt.show显示图像.

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

plt.xlim(0,5)
plt.ylim(-5,15)
plt.xlabel('x')
plt.ylabel('y')

plt.xticks(np.linspace(-1,5,5))
plt.yticks([-4, 0, 4, 9, 13],['really bad','bad','normal','good','really good'])
plt.show()

在这里插入图片描述

4.移动坐标轴

使用plt.gca获取当前坐标轴信息. 使用.spines设置边框:右侧边框;使用.set_color设置边框颜色:默认白色; 使用.spines设置边框:上边框;使用.set_color设置边框颜色:默认白色;

ax = plt.gca()  # 获取当前的axes
ax.spines['right'].set_color('none')    #去掉右边框(ax.spines为边框)
ax.spines['top'].set_color('none')    #去掉上边框

在这里插入图片描述
使用.xaxis.set_ticks_position设置x坐标刻度数字或名称的位置:bottom.
使用.yaxis.set_ticks_position设置y坐标刻度数字或名称的位置:left.

使用.spines设置边框:x轴;使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
使用.spines设置边框:y轴;使用.set_position设置边框位置:x=0的位置;(位置所有属性:outward,axes,data) 使用plt.show显示图像.

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))    #横坐标位于y=0处
ax.spines['left'].set_position(('data',0))     #纵坐标位于x=0处
plt.show()

在这里插入图片描述

5.图例

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((0,5))   #x的范围
plt.ylim((-5,15))  #y的范围

new_sticks = np.linspace(-1,5,5)
plt.xticks(new_sticks)  #改变x的刻度
plt.yticks([-4, 0, 4, 9, 13],['$really\ bad$', '$bad$', '$normal$', '$good$', '$really\ good$'])  #改变y的刻度

l1, = plt.plot(x,y1,label = 'Linear')     #画直线
l2, = plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label = 'Curve')   #画曲线
plt.legend(handles=[l1,l2],labels=['blue','red'],loc='best') #画图例

6.标注

6.1.标注某一点

若要标注出点(x0, y0)的位置信息. 则用plt.plot([x0, x0,], [0, y0,], ‘k–’, linewidth=2.5) 画出一条垂直于x轴的虚线

import matplotlib.pyplot as plt
import numpy as np

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')
ax.spines['bottom'].set_position(('data',0))  #y=0的横坐标
ax.spines['left'].set_position(('data',0))  #x=0的纵坐标

x0 = 1
y0 = 2*x0 + 1
plt.plot([x0,x0],[0,y0],'k--',lw=1.5)  #画垂直于x的虚线
plt.scatter(x0,y0,s=50,color='b')  #画要标注的点

在这里插入图片描述

6.2.annotate注释

接下来对(x0, y0)这个点进行标注。

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"))

其中参数xycoords=‘data’ 是说基于数据的值来选位置, xytext=(+30, -30) 和 textcoords=‘offset points’ 对于标注位置的描述 和 xy 偏差值, arrowprops是对图中箭头类型的一些设置.
在这里插入图片描述

6.3.text注释

plt.text(-2,2,'This is text',fontdict={'size':16,'color':'r'})

在这里插入图片描述

7.能见度(tick)

我们对被遮挡的图像调节相关透明度,通过设置 x轴 和 y轴 的刻度数字进行透明度设置

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 50)
y = 0.1*x

plt.figure()
plt.plot(x, y, linewidth=10, zorder=1)      
plt.ylim(-2, 2)

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['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7, zorder=2))

plt.show()

其中label.set_fontsize(12)重新调节字体大小,bbox设置目的内容的透明度相关参数,facecolor调节 box 前景色,edgecolor 设置边框, 本处设置边框为无,alpha设置透明度. 最终结果如下:
在这里插入图片描述

发布了195 篇原创文章 · 获赞 566 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/105273750
今日推荐