python之pyplot

2022-01-27  本文已影响0人  jinjin1009
import matplotlib.pyplot as plt

1、定义x和y,画图展示,保存图片

x=[ 1, 2, 3, 4 ]
y=[ 1, 4, 9, 16 ]
plt.plot(x,y)
plt.savefig('test.png',dpi=120)
plt.show()

其中dpi参数指定图像的分辨率为120
2、优化绘图线条风格

color:线条颜色,值r表示红色 red
marker:点的形状,值o表示点为圆圈标记 circle marker
linestyle:线条的形状,值dashed表示用虚线连接各点
plt.plot(x,y,color='r',marker='o',linestyle='dashed')

线条颜色color

线条颜色 洋红 绿
代码表示 r m y g c b k w

线条标记marker

标记 描述
o 圆圈
+ 加号
d 小菱形

线条风格linestyle

线条风格 实线 虚线 破折线 点画线 无线条
代码表示 - : -. None或者,

3、坐标轴的控制
坐标轴范围和标题

axis:坐标轴范围
语法为axis[ xmin, xmax, ymin, ymax ]
也就是axis[ x轴最小值, x轴最大值, y轴最小值, y轴最大值 ]
xlabel/ylabel:坐标轴标题
plt.xlabel('x坐标轴')
plt.ylabel('y坐标轴')
plt.title('标题')

坐标图上标记

#添加注释,参数名xy:箭头注释中箭头所在位置,参数名xytext:注释文本所在位置
#arrowprops在xy和xytext之间绘制箭头,shrink表示注释点和注释文本之间的图标距离
plt.annotate('我是注释', xy=(2,5), xytext=(2,10), arrowprops=dict(facecolor='black',shrink=0.01))
plt.show()
image.png

坐标间隔设定
函数plt.xticks()和plt.xticks()用来实现对x轴和y轴坐标间隔(也就是轴记号)的设定。用法上,函数的输入是两个列表,第一个表示取值,第二个表示标记。当然如果你的标记就是取值本身,则第二个列表可以忽略

plt.xticks([i * np.pi/2 for i in range(-4, 5)], [str(i * 0.5) + "$\pi$" for i in range(-4, 5)])
plt.yticks([i * 0.5 for i in range(-4, 5)])
image.png
4、多图绘制
一图多曲线
import numpy as np
x = np.arange(-1, 1, 0.1)
y1 = np.exp(x)
y2 = np.exp(2 * x)
plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1)
plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1)
plt.xlabel("x")
plt.ylabel("y")
plt.show()

多图与子图
figure()函数可以帮助我们同时处理生成多个图,而subplot()函数则用来实现,在一个大图中,出现多个小的子图。需要注意的是,figure()中的参数为图片序号,一般是按序增加的,这里面还涉及一个当前图的概念,其中subplot()的参数有3个,分别为行数、列数、以及子图序号。比如subplot(1,2,1)表示这是一个1行,2列布局的图(两个子图,在同一行,分居左右),其中,当前处理的子图是第一个图(也就是左图)。

import numpy as np
x = np.arange(-1, 1, 0.1)
y1 = np.exp(x)
y2 = np.exp(2 * x)
y3 = np.exp(1.5 * x)

plt.figure(1) # 生成第一个图,且当前要处理的图为fig.1
plt.subplot(1, 2, 1) # fig.1是一个一行两列布局的图,且现在画的是左图
plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1) # 画图
plt.xlabel("x")
plt.ylabel("y1")

plt.figure(2) # 生成第二个图,且当前要处理的图为fig.2
plt.plot(x, y2, color="k", linestyle="-", marker="s", linewidth=1) # 画图,fig.2是一张整图,没有子图,默认subplot(1, 1, 1)
plt.xlabel("x")
plt.ylabel("y2")

plt.figure(1) # 当前要处理的图为fig.1,而且当前图是fig.1的左图
plt.subplot(1, 2, 2) # 当前图变为fig.1的右图
plt.plot(x, y3, color="b", linestyle="-", marker="v", linewidth=1)
plt.xlabel("x")
plt.ylabel("y3")

plt.show()

这样,我们就用一个脚本画了两张图fig.1和fig.2。其中,fig.1包含了分居左右的两个子图,分别是y1和y3的曲线;fig.2是一张整图,画的是y2曲线。

如果想要某个子图占据整行或者整列,可以采用下面
第三个图,实际上相当于将前面的两个小的子图看作是一个整图

plt.subplot(221) # 第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.show()
上一篇 下一篇

猜你喜欢

热点阅读