Matplotlib画图

文章介绍了如何使用Python的Matplotlib库进行基本的图形绘制,包括设置坐标轴、范围和刻度,以及如何创建figure和axes对象进行面向对象的编程。此外,还讲解了如何添加子图以及绘制图例,增强了图表的可读性。
摘要由CSDN通过智能技术生成

最简单的画图方式

最简单的画图方式就是直接导入Matplotlib,比如要画一条直线,获得数据直接plt.plot

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,5)
y=x
plt.plot(x,y,color='r')
plt.show()

同样我们可以设置坐标轴的含义,范围,刻度

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,5)
y=x


plt.xlabel('i am x')
plt.xlabel('i am y')

plt.xlim([0,20])
plt.ylim([0,20])

plt.xticks([0,2,4,6,8,10,12,14,16,18,20])
plt.yticks([0,2,4,6,8,10,12,14,16,18,20])

plt.plot(x,y,color='r')
plt.show()

在 Matplotlib 中,面向对象编程的核心思想是创建图形对象(figure object)。通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布。在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域)

那我们就可以创建一个figure之后再来画图

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,5)
y=x

"""
    figure参数列表
    figsize	指定画布的大小,(宽度,高度),单位为英寸。
    dpi	指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。
    facecolor	背景颜色。
    dgecolor	边框颜色。
    frameon	是否显示边框。
"""
fig=plt.figure()
plt.plot(x,y,color='r')
plt.xlabel('i am x')
plt.xlabel('i am y')

plt.xlim([0,20])
plt.ylim([0,20])

plt.xticks([0,2,4,6,8,10,12,14,16,18,20])
plt.yticks([0,2,4,6,8,10,12,14,16,18,20])
plt.show()

接着可以在figure上添加子图
Matplotlib 定义了一个 axes 类(轴域类),该类的对象被称为 axes 对象(即轴域对象),它指定了一个有数值范围限制的绘图区域。在一个给定的画布(figure)中可以包含多个 axes 对象,但是同一个 axes 对象只能在一个画布中使用。
通过调用 add_axes() 方法能够将 axes 对象添加到画布中,该方法用来生成一个 axes 轴域对象,对象的位置由参数rect决定

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,5)
y=x

fig=plt.figure()
"""
rect 是位置参数,接受一个由 4 个元素组成的浮点数列表,形如 [left, bottom, width, height] ,
# 它表示添加到画布中的矩形区域的左下角坐标(x, y),以及宽度和高度。如下所示:
"""
ax=fig.add_axes([0.1,0.1,0.8,0.8])
#注意:每个元素的值是画布宽度和高度的分数。即将画布的宽、高作为 1 个单位。比如,[ 0.1, 0.1, 0.8, 0.8],它代表着从画布 10% 的位置开始绘制, 宽高是画布的 80%

ax.plot(x,y,color='r')
plt.show()

接着我们在同一个figure添加两个子图,并且可以设置对应子图ax的一些属性

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,5)
y=x

fig=plt.figure()
ax_1=fig.add_axes([0.1,0.1,0.8,0.8])
ax_1.set_xlabel('big_x')
ax_1.set_ylabel('big_y')
ax_1.plot(x,y,color='r')

ax_2=fig.add_axes([0.2,0.6,0.25,0.25])
ax_2.set_xlabel('small_x')
ax_2.set_ylabel('small_y')
ax_2.plot(x,y,color='k')

plt.show()

最后我们可以使用legend()绘制图例
axes 类的 legend() 方法负责绘制画布中的图例,它需要三个参数,如下所示

ax.legend(handles, labels, loc)

labels 是一个字符串序列,用来指定标签的名称;
loc 是指定图例位置的参数,其参数值可以用字符串或整数来表示;
handles 参数,它也是一个序列,它包含了所有线型的实例;

import matplotlib.pyplot as plt
import numpy as np

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

plt.figure()

l1,=plt.plot(x,y2,label='up')
l2,=plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--',label='down')

#对图中数据线作出说明
# plt.legend()
#handles里面是画出的线的对象,加逗号是matplotlib的特殊形式,labels是不用线自带的ID,用别的ID代替,loc代表摆放的位置
plt.legend(handles=[l1,l2,],labels=['a','b'],loc='best')
plt.show()

也可以这么写

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,5)
y_1=x
y_2=np.sqrt(x)
fig=plt.figure()
ax_1=fig.add_axes([0.1,0.1,0.8,0.8])

ax_1.plot(x,y_1,color='r',label='a')
ax_1.plot(x,y_2,color='g',label='b')
ax_1.legend(loc='best')
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值