python 中 Matplotlib画图技巧

1.模块介绍

matplotlib.pyplot是一个有命令风格的函数集合,它看起来和MATLAB很相似。每一个pyplot函数都使一副图像做出些许改变,例如创建一幅图,在图中创建一个绘图区域,在绘图区域中添加一条线等等。在matplotlib.pyplot中,各种状态通过函数调用保存起来,以便于可以随时跟踪像当前图像和绘图区域这样的东西。绘图函数是直接作用于当前axes(matplotlib中的专有名词,图形中组成部分,不是数学中的坐标系。)

import matplotlib.pyplot as plt
#import matplotlib.pyplot  //也可以

2.基本函数

  • plt.plot(x, y) --> plot函数可以接受任意个数的参数,在此处是将x和y数据代入xy坐标中
  • plt.plot(x, y, 'ro', x, y1, 'g--') --> x和y用‘ro’即红色圆形来画,而x和y1则用‘g--’即绿色虚线来画,‘r-’代表红色实线,其他的g和b依此类推,‘o'是圆形的意思,’b^‘表示蓝色类似正三角形,
  • ax.scatter --> 散点图
  • plt.xlabel('x') --> x轴标签
  • plt.ylabel('y(x)') --> y轴标签
  • plt.title("Polynomial") --> 指定图形的主题名字
  • plt.show() --> 显示坐标图
  • plt.subplot(311) --> 该函数的第一个参数是子图的行数,第二个参数是子图的列数,第三个参数是一个从1开始的序号。另一种方式是将这3个参数结合成一个数字,如311。这样,子图将被组织成3行1列
  • fig = plt.figure() --> 创建一个Matplotlib的figure对象——这是绘图组件的顶层容器

3.画图模板

显示画图时出现的中文和负号

import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False

画图样例 

from matplotlib import pyplot as plt
colors=['r','g','b','k']
x=np.linspace(-2*np.pi,2*np.pi,500)#生成-2*pi到2*pi 含有500个数据的数组
y1=x**2
y2=np.sin(x)
y3=np.cos(x)
y4=np.log(abs(x))
f=[y1,y2,y3,y4]
ff=['$y=x^2$','$y=sin(x)$','$y=cos(x)$','$y=log(x)$']
plt.figure(figsize=(16,10))
for i in range(1,len(colors)+1):
    plt.subplot(220+i)#subplot(abc)代表在a*b的画布里的第几个图
    plt.plot(x,f[i-1],color=colors[i-1]);
    plt.title(ff[i-1],size=18)

4.通用模板

import numpy as np
import matplotlib.pyplot as plt
#正确显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 数据准备
x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
z=np.cos(x)
# 设置画布大小
plt.figure(figsize=(12, 5))
# plot 画x与y和x与z的关系图
plt.plot(x,y,label='sin(x)',color='red', linewidth=1,marker='o',markersize=3)
plt.plot(x,z,label='cos(x)',color='blue',linewidth=1,linestyle='dashed',marker='<',markersize=3)
# 设置x轴标签、坐标轴范围,坐标轴刻度,坐标轴刻度旋转角度
plt.xlabel('x',size=14)
plt.xlim(-np.pi,np.pi)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],rotation=60,size=12) #
# 设置y轴标签、坐标轴范围,坐标轴刻度,坐标轴刻度旋转角度
plt.ylabel('y',size=14)
plt.ylim(-1,1)
plt.yticks([-1,-0.5,0.5,0,1],rotation=0,size=12)
#标题
plt.title('sin/cos画图',size=18)
# 紧凑布局:自动调整图形、坐标轴、标签之间的距离,对于多个子图时尤其有用。
plt.tight_layout()
# 设置显示图例,要在plt.plot 时设置 label='xxx'才能显示图例
plt.legend()
#加网格线
plt.grid(True)
# 保存图像,可以是任意后缀名,dpi设置图像清晰度
#plt.savefig('./fig1.pdf', dpi=600)  #要放在plt.show()之前,否作保存的图像为空白
# 显示图像
plt.show()

 

 5.高阶技巧:twinx/ twiny

设置两条曲线共用x轴,但不共用y轴,或者相反。从而将两个数量级差距很大的曲线画在同一幅画中。下面以sin(x)和cos(x)举例

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,num=60)
y=np.sin(x)
z=0.01*np.cos(x)-0.9
plt.figure(figsize=(12,5))
# plot 画x与y的关系图
L1,=plt.plot(x,y,label='sin(x)',color='red', linewidth=1)
plt.ylabel('y')
plt.ylim(-1,1)
plt.yticks([-1,-0.5,0,1],rotation=0)
# 设置共用x轴
plt.twinx()
# plot 画x与z的关系图
L2,=plt.plot(x,z,label='cos(x)',color='blue',linewidth=1)
plt.ylabel('z')
plt.ylim(-0.91,-0.89)
plt.yticks([-0.91,-0.905,-0.90,-0.895,-0.89],rotation=0)
plt.legend(handles=[L1,L2])
plt.xlabel('x')
plt.title('$\sin(x) \quad and \quad \cos(x)$画图')
plt.tight_layout()
plt.show()

6.使用Matplotlib创建子图

fig.add_axes

  • 先调用plt.figure()创建Figure对象,图表是所有坐标的容器。
  • 调用fig.add_axes()在图表的任意位置添加子图,该方法接收一个包含4个数字的列表: [𝑥,𝑦,𝑤𝑖𝑑𝑡ℎ,ℎ𝑒𝑖𝑔ℎ𝑡][x,y,width,height],分别代表子图左下角的坐标(x,y),子图的宽度和高度,这四个数字的取值范围都是[0,1][0,1],代表相对位置和大小。
  • 最后调用ax.plot将数据映射到子图。
# 创建图表对象
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 7))

# 创建子图
ax1 = fig.add_axes([0, 0.5, 0.45, 0.45])  # 在图表的左上角创建一个子图
ax2 = fig.add_axes([0, 0, 0.45, 0.45])  # 在图表的左下方创建一个子图
ax3 = fig.add_axes([0.5, 0.5, 0.45, 0.45])  # 在图表的右上角创建一个子图
ax4 = fig.add_axes([0.5, 0, 0.45, 0.45])  # 在图表的右下方创建一个子图
# 左上角子图:曲线图
x1 = np.linspace(-10, 10, 100)
ax1.plot(x1, np.sin(x1), color="red");
# 右下角子图:柱状图
x2 = ["a", "b", "c", "d", "e", "f"]
y2 = [1.2, 1.3, 2.5, 0.25, 5, 1.56]
ax2.bar(x2, y2, color="blue");
# 左上角子图:曲线图
x3 = np.linspace(-10, 10, 100)
ax3.plot(x3, np.cos(x3), color="green");
# 右下角子图:柱状图
x4 = ["a", "b", "c", "d", "e", "f"]
y4 = [1.2, 1.3, 2.5, 0.25, 5, 1.56]
ax4.plot(x4, y4, color="black");

left, bottom, width, height = 0.55, 0.25, 0.15, 0.15
ax5=fig.add_axes([left, bottom, width, height])
ax5.bar(x4, y4);

  • 12
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Matplotlib是一个用于在Python绘制图形的库,支持多种类型的图形,如直方图、折线图、散点图、饼图、热图等。使用Matplotlib绘图需要先导入该库,然后设置图形类型和数据,最后使用plot或其他绘图函数绘制图形。代码示例: ``` import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) plt.show() ``` 这将绘制一条折线图。 ### 回答2: MatplotlibPython经典的绘图库,它可以用来绘制各种类型的图表,包括线图、散点图、柱状图、等高线图等等。Matplotlib是一个非常灵活的库,用户可以调整图表的各种属性,定制出自己想要的图像效果。 Matplotlib库将绘图过程分为三个部分:数据准备、图像绘制和展示。其,数据准备是将需要绘制的数据准备好,图像绘制是将准备好的数据转换成图像,而展示则是将图像显示出来。下面是详细的使用步骤: 1.导入Matplotlib库 在Python使用Matplotlib库需要先导入该库,导入时一般使用如下指令: import matplotlib.pyplot as plt 其,plt是库的缩写,在绘图时可以直接使用该缩写,避免频繁地输入较长的库名称。 2.准备数据 在Matplotlib,数据可以通过Python的列表或NumPy数组来表示。为了绘制图形,首先需要准备好要绘制的数据。例如,要绘制一条曲线,可以先生成横坐标和纵坐标对应的列表: import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) 其,np.arange(0, 10, 0.1)生成了一个从0到10,步长为0.1的数组,而np.sin()函数将该数组的每个数值都计算其正弦值。 3.绘制图像 在准备好数据后,就可以进行图像绘制了。Matplotlib有许多函数可以用来绘制不同类型的图表,例如: - plt.plot(x, y):绘制一条曲线; - plt.scatter(x, y):绘制散点图; - plt.bar(x, y):绘制柱状图。 绘图函数通常包括一些可选参数,用来调整图像的样式和布局。例如,可以设置曲线的颜色、线型和线宽等: plt.plot(x, y, color='blue', linewidth=2, linestyle='--') 4.展示图像 图像绘制完成后,最后一步就是展示图像。可以使用plt.show()函数将绘制出来的图像显示出来: plt.show() 但是,在某些情况下,需要将图像保存为文件,可以使用plt.savefig()函数将图像保存为PNG、PDF等格式的文件: plt.savefig('sin_curve.png') 总的来说,Matplotlib是一个灵活、易用的绘图库,适合各种数据可视化的应用场景。它支持的图表类型很多,还提供了许多可选参数用于对图像做进一步的调整和修改。 ### 回答3: matplotlib是一个绘图库,可以用Python语言创建各种静态,动态、交互式的图形界面。它是Python Data Science的核心库之一,提供了各种方法、类和函数,能够轻松地绘制各种类型的图形,例如:折线图、散点图、柱状图、饼图、热力图、3D图、子图等等。 matplotlib库是Python绘图的基础库,其主要优点有: 1. 可以在Python语言轻松创建各种图表 2. 支持互动式图形 3. 可以生成高质量的图表,支持各种格式的输出 4. matplotlib可以和NumPy这样的数值计算库紧密结合使用 matplotlib是一个源项目,在PyPI(Python Package Index)上已经被安装了上百万次,用户群体庞大,因此使用matplotlib发的应用程序较多。特别是在数据科学和机器学习领域,matplotlib是最常用的绘图库之一。 使用matplotlib可以分为三个步骤:数据处理、图形配置、图形展示。 1. 数据处理:将数据从文件或数据库读取,并对数据进行初步的处理和清洗,以便更好的生成图表。 2. 图形配置:配置图表的样式、标签、标题、坐标轴、调色板等信息。 3. 图形展示:通过show()函数或保存成图片的方式将图表展示给用户。 最后,需要注意的是,matplotlib的图形展示通常需要手动结束绘图进程,否则图形窗口会一直显示。因此,使用时需要谨慎处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值