曲面图代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 定义二维正态分布函数
def bivariate_normal(x, y, mean_x=0, mean_y=0, sigma_x=1, sigma_y=1, rho=0):
return (1 / (2 * np.pi * sigma_x * sigma_y * np.sqrt(1 - rho**2))) * \
np.exp(-1 / (2 * (1 - rho**2)) *
(
((x - mean_x)**2 / sigma_x**2) +
((y - mean_y)**2 / sigma_y**2) -
2 * rho * (x - mean_x) * (y - mean_y) / (sigma_x * sigma_y)
)
)
# 生成网格数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
# 计算正态分布的值
Z = bivariate_normal(X, Y, mean_x=0, mean_y=0, sigma_x=2, sigma_y=2, rho=0)#用于改进平坦度
# 创建3D图形
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
# 绘制曲面图
surf = ax.plot_surface(X, Y, Z, cmap='plasma', linewidth=0, antialiased=False, alpha=0.7)# cmap='plasma' 用于改变颜色 # 添加透明度
# 隐藏坐标轴、刻度、标签和网格
ax.set_xticks([]), ax.set_yticks([]), ax.set_zticks([]) # 隐藏刻度
ax.set_xlabel(''), ax.set_ylabel(''), ax.set_zlabel('') # 隐藏坐标轴标签
ax.grid(False) # 隐藏网格线
# 移除坐标轴背景和线条
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax.w_xaxis.line.set_linewidth(0)
ax.w_yaxis.line.set_linewidth(0)
ax.w_zaxis.line.set_linewidth(0)
# 保存图形为高清图片
plt.savefig('flat.png', dpi=300, bbox_inches='tight', pad_inches=0)
# 显示图形
plt.show()
图如下:
- 使用 ‘plasma’ 颜色映射 #‘viridis’、‘plasma’、‘inferno’、‘cividis’
PPT画曲线图
- https://www.bilibili.com/video/BV1wN411Q7fg/?spm_id_from=333.337.search-card.all.click&vd_source=ec464e30d7d9062c46ebfd3907771703