pyplot 二维画图
划分子图
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "SimHei"
fig = plt.figure(facecolor="lightgrey") # 背景颜色
plt.subplot(2, 2, 1)
plt.title("子标题1")
plt.subplot(2, 2, 2)
plt.title("子标题2", loc="left", color="b")
plt.subplot(2, 2, 3)
myfontdict = {"fontsize": 12, "color": "g", "rotation": 60}
plt.title("子标题3", fontdict=myfontdict)
plt.subplot(2, 2, 4)
plt.title("子标题4", color="white", backgroundcolor="black")
plt.suptitle("全局标题", fontsize=20, color="red", backgroundcolor="yellow")
plt.tight_layout(rect=[0, 0, 1, 0.9])
plt.show()
散点图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文黑体为默认字体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
n = 1024
x = np.random.normal(0, 1, n) # normal生成正态分步的点
y = np.random.normal(0, 1, n)
x2 = np.random.uniform(-4, 4, (1, n)) # uniform生成均匀分布的点
y2 = np.random.uniform(-4, 4, (1, n))
plt.scatter(x, y, color="blue", marker="o", label="正态分布")
plt.scatter(x2, y2, color="yellow", marker='*', label="均匀分布")
plt.legend() # 绘制图例
plt.title("标准正态分布", fontsize=20) # 标题
# plt.text(2.5, 2.5, "均值:0\n标准差:1") # 显示文本
plt.xlim(-4, 4) # x轴范围
plt.ylim(-4, 4) # y轴范围
plt.xlabel('横坐标x', fontsize=14)
plt.xlabel('纵坐标y', fontsize=14)
plt.show()
折线图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文黑体为默认字体
n = 24
y1 = np.random.randint(27, 37, n)
y2 = np.random.randint(40, 60, n)
plt.plot(y1, label="温度")
plt.plot(y2, label="湿度")
plt.xlim(0, 23) # x轴范围
plt.ylim(20, 70) # y轴范围
plt.xlabel("小时", fontsize=12)
plt.ylabel("测量值", fontsize=12)
plt.legend() # 绘制图例
plt.title("24小时温度湿度统计", fontsize=20) # 标题
plt.show()
柱状图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文黑体为默认字体
plt.rcParams['axes.unicode_minus'] = False
n = 12
y1 = np.random.randint(10, 35, n)
y2 = np.random.randint(-35, -10, n)
plt.bar(range(len(y1)), y1, width=0.8, facecolor="green", edgecolor="white", label="统计量1")
plt.bar(range(len(y1)), y2, width=0.8, facecolor="red", edgecolor="white", label="统计量2")
plt.title("柱状图 ", fontsize=20) # 标题
plt.legend() # 绘制图例
plt.show()
mplot3d 三维画图
figure对象生成3D图表
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax3d = Axes3D(fig)
plt.show()
绘制散点图
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x = np.random.uniform(10, 40, 30)
y = np.random.uniform(100, 200, 30)
z = np.random.uniform(10, 20, 30)
fig = plt.figure()
ax3d = Axes3D(fig)
ax3d.scatter(x, y, z, c='b', marker="*")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")
plt.show()
绘制平面图
生成网格点坐标矩阵X, Y = np.meshgrid(x, y)
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x = np.arange(1, 100)
y = np.arange(1, 100)
X, Y = np.meshgrid(x, y) # 生成网格点坐标矩阵
Z = 2*X+Y
print(X)
print(Y)
fig = plt.figure()
ax3d = Axes3D(fig)
surf = ax3d.plot_surface(X, Y, Z, cmap="rainbow")
fig.colorbar(surf, shrink=0.5, aspect=5)
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z=2X+Y")
plt.show()
绘制线框图
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x = np.arange(1, 10, 0.5)
y = np.arange(1, 10, 0.5)
X, Y = np.meshgrid(x, y) # 生成网格点坐标矩阵
Z = 2*X+Y
fig = plt.figure()
ax3d = Axes3D(fig)
surf = ax3d.plot_wireframe(X, Y, Z, color="b", linewidth=0.5)
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z=2X+Y")
plt.show(
绘制曲面图
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y) # 生成网格点坐标矩阵
Z = np.sin(np.sqrt(X** 2+Y** 2)) # z=sin根号下(x^2 + y^2)
fig = plt.figure()
ax3d = Axes3D(fig)
surf = ax3d.plot_surface(X, Y, Z, cmap="rainbow")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")
plt.show()
曲面的线框图
更改曲面图程序中surf = ax3d.plot_wireframe(X, Y, Z, color="b", linewidth=0.5)