matplotlib.pyplot使用汇总

本文介绍了我在工程开发过程中使用python的matplotlib.pyplot常用的一些功能。

        引用matplotlib.pyplot

import matplotlib.pyplot as plt

一、plt.plot(x0, y0, [fmt],x1, y2, [fmt], ..., **kwargs)

        plot可以画多条线,也可以画单条线,每一个[fmt]对应一条线的格式,fmt格式包括的3个属性:标记、线条、颜色。kwargs不能分别定义,包括线段粗细等。建议不同的线分别画,可以避免有些参数不能分别定义的问题。

        plot可以用来画线,也可以用来画点(只指定marker不指定line即可画点)。x是x轴所对应的坐标位置,y是y轴所对应的坐标位置,x和y相同位置的数值组合在一起就能表示一个点,所以x和y必须是同样长度的元组、List或者np.array()。

       fmt = "[marker][color][linestyle]", 根据fmt中三种参数的不同,会生成不一样效果的图。fmt参数可以三个组合在一起成为一个字符串,也可以分别指代,区别在于:组合形式每个部分只能用单字符,但是分别值代可以用字符串或单字符。以下两段代码的效果是一样的:

x = np.arange(1,10)
y = x
plt.plot(x, y, "o:r")//圆点标记、虚线、红色
x = np.arange(1, 10)
y = x
plt.plot(x, y, linestyle=":", marker="o", color="red")

常用的marker:"o"实心点,"."点,","极小像素点,"^"上三角,">"右三角,"+"十字……等

常见的linestyle:"-" "solid",":" "dotted","--" "dashed"破折线,"-." "dashdot"点划线,"" "None"指定不画线

常见的color:"r"red,"k"black,"w"white,"g"green,"y"yellow……等

更多color参见color,更多marker参见marker

        marker的样式确定后,marker的属性也可以被更改:markersize或ms,可指定marker的大小;markerfacecolor或mfc,可修改marker填充颜色;markeredgecolor或mec,可修改marker边缘颜色。

        linestyle被确定后,可以修改线的宽度,linewidth或lw:如linewidth = "10"。

二、标题和轴标签

        设置图片标题

plt.title("标题", fontsize=12, loc="center")//loc:left, right, center

        设置轴标签

plt.xlabel("x轴标题", fontsize=12, loc="left")//loc: left, right, center
plt.ylabel("y轴标题", fontsize=12, loc="top")//loc: top, bottom, center

        三者都有设置字体大小的参数fontsize以及设置标题位置的参数loc,默认为"center"

三、设置轴的取值范围、刻度、比例

        设置轴的取值范围。若图像已经画好了,则下述代码不会再设置坐标轴范围,而是输出坐标轴范围

plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)

         设置轴刻度。ticks是一个list,对应的是轴刻度,可以是小数可以是整数,ticks不指定的位置不显示刻度;labels也是一个list,长度和ticks相等,内容是你想要在对应刻度显示的内容;rotation是刻度内容旋转角度;fontsize用来设置刻度值的字体大小。

plt.xticks(ticks, labels, rotation=90, fontsize=12)
plt.yticks(ticks, labels, rotation=90, fontsize=12)

         设置x y轴比例保持一致。我们使用默认画图不指定比例时,x y的比例往往不一样,导致图像被拉伸变形,使用以下指令使x y比例保持一致:

plt.axis("equal")

 四、添加文本

plt.text(x, y, "内容")

        更多参数参照文章:plt.text(),包含字体、对齐方式、大小等属性。

五、plt.figure()

        该函数操作对象是整张画布,每调用一次此函数就会生成一张画布,所以需要在一开始就定义,它能够定义整张图像的大小、编号、边框和底色等

fig = plt.figure(num=1, figsize=(10,10), facecolor="blue", dpi=80, edgecolor="yellow", frameon=True)
//返回值fig是一个图像单位,根据需要选择是否需要此参数

六、绘制多图

        绘制多图,需要用到plt.subplot或plt.subplots,subplot一次只能画一个子图,同时返回一个axe对象,subplots一次性创建多个子图,返回一个figure和axe,subplot不需要调用返回的axe也能在当前子图上操作,但是subplots必须依赖返回的axe才能在子图上进行操作。

        对于subplot,不一定需要拿到axe才能操作当前子图,因为subplot一次只能创建一个子图,所以创建完子图后默认的坐标位置就是当前子图,需要注意的是拿到axe对象进行操作时,需要在成员函数的名字前需要加上set_,如plt.title("")变为axe.set_title(""):

下面两段subplot实现的效果是一样的
################################

x = np.arange(1,10)
y = x
fig = plt.figure(figsize=(10,10))
ax = plt.subplot(1,2,1)
ax.set_title("y=x")
ax.set_xticks([i for i in range(1, 10)])
ax.plot(x,y)
ax = plt.subplot(122)
ax.plot(x, y, ":")

#################################

x = np.arange(1,10)
y = x
fig = plt.figure(figsize=(10,10))
plt.subplot(121)
plt.title("y=x")
plt.xticks([i for i in range(1,10)])
plt.plot(x,y)
plt.subplot(122)
plt.plot(x, y, ":")

         对于subplots,因为一次性把所有子图都先布局好,所以索引返回值是必不可少的,同时subplots中融合了plt.figure()的功能

x = np.arange(1,10)
y = x
fig, ax = plt.subplots(1,2,figsize=(12,12). facecolor="w")
ax[0].plot(x,y)
ax[0].set_xticks([i for i in range(1,10)])
ax[0].set_title("y=x")
ax[1].plot(x,y,"o")
############################
需要注意的是,当定义子图分布只有一行或一列时,axe的索引也只有一位,
当子图分布是两行两列及以上时,axe的索引也要变成ax[0,0],ax[0,1]这样的形式
也可以:fig, [[ax0, ax1], [ax2, ax3]] = plt.subplots(2, 2)
############################

         subplots()还有更多的参数,如共享坐标轴范围,详见subplot和subplots

七、设置图片尺寸

        前边我们知道在plt.figure()中可以通过"figsize"参数设置图片的大小比例,但是这是在画图之前设置的,如果我们已经做了一系列plt画图操作,这个时候发现图片的比例不对,需要调整一下图片的比例,可以使用:

plt.gcf().set_size_inches(x_length, y_length)

八、savefig

        需要把图像保存到本地,最简单的是savefig()函数,两种使用方法分别对应两种情况,多fig下要用fig.savefig()的方式

##########################
x = np.arange(1,10)
y = x
plt.plot(x, y)
index = 1
plt.savefig(f"./figure_{index}.png")

##########################
fig1 = plt.figure(1)
plt.plot(x,y)
fig2 = plt.figure(2)
plt.plot(x,y,":")
fig1.savefig("./fig1.png")
fig2.savefig("./fig2.png")

         另外,保存的图片若想白边少一点,则使用如下参数:

plt.savefig("./1.png", bbox_inches = 'tight')
# 此时生成的图片将会适应图框大小,减少白边,免去后期裁剪

九、imshow

        语法:plt.imshow(x, cmap, alpha......),我一般用它来画混淆矩阵

x = [[1,2],[3,4]]
plt.imshow(x, cmap=plt.cm.gray, alpha=0.5)
plt.text(0, 0, "TP")
plt.text(0, 1, "FP")
plt.text(1, 0, "FN")
plt.text(1, 1, "TN")
plt.xlabel("prediction")
plt.ylabel("label")
plt.xticks([0, 1], ["true", "false"])
plt.yticks([0, 1], ["true", "false"])
//生成与x的形状相同的方块矩阵,与x的内部值没关系,只与其形状有关系
//alpha设置透明度

十、添加图例

        只需要在原来plot()中的label参数赋名字,然后使用plt.legend()即可

x1 = [……]
y1 = [……]
x2 = [……]
y2 = [……]
plt.plot(x1, y1, 'r-.', label = 'label')
plt.plot(x2, y2, 'b--.', label = 'predict')
plt.legend()
plt.show()

十一、画箭头

        画箭头的指令最常用的是arrow():

plt.arrow(x, y, dx, dy, head_length=0.5, head_width=0.5, color='k')
# (x, y)是起点的坐标,dx dy分别是箭头的终点基于起点坐标(x, y)的偏移量,假如我们需要画从(x, y)到
# (x1, y1)的箭头,那么dx=x1-x, dy=y1-y

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值