Python:Matplotlib画图示例

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()

输出X和Y

在这里插入图片描述

绘制线框图

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)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值