43 lines
2.0 KiB
Python
43 lines
2.0 KiB
Python
import numpy as np
|
||
# import os
|
||
# os.chdir('D:/data') # 设置文件保存的位置
|
||
|
||
|
||
def main():
|
||
x = np.arange(-5, 5, 0.25)
|
||
y = np.arange(-5, 5, 0.25)
|
||
X, Y = np.meshgrid(x, y)
|
||
R = np.sqrt(X**2 + Y**2)
|
||
Z = np.sin(R)
|
||
Plot_3D_Surface(x,y,Z)
|
||
|
||
|
||
def Plot_3D_Surface(x,y,matrix,filename='a.jpg', titlename='Plot 3D Surface'):
|
||
import matplotlib.pyplot as plt
|
||
from matplotlib import cm
|
||
from matplotlib.ticker import LinearLocator
|
||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||
plt.subplots_adjust(bottom=0.1, right=0.65) # 调整位置
|
||
x, y = np.meshgrid(x, y)
|
||
surf = ax.plot_surface(x, y, matrix, cmap=cm.coolwarm, linewidth=0, antialiased=False) # Plot the surface.
|
||
ax.set_title(titlename, fontsize=20, fontfamily='Times New Roman')
|
||
ax.set_xlabel('x', fontsize=30, fontfamily='Times New Roman') # 坐标标签
|
||
ax.set_ylabel('y', fontsize=30, fontfamily='Times New Roman') # 坐标标签
|
||
ax.set_zlabel('z', fontsize=30, fontfamily='Times New Roman') # 坐标标签
|
||
# ax.set_zlim(-1, 1) # 设置z轴的范围
|
||
ax.zaxis.set_major_locator(LinearLocator(5)) # 设置z轴主刻度的个数
|
||
ax.zaxis.set_major_formatter('{x:.2f}') # 设置z轴主刻度的格式
|
||
ax.tick_params(labelsize=15) # 设置刻度值字体大小
|
||
labels = ax.get_xticklabels() + ax.get_yticklabels() + ax.get_zticklabels()
|
||
[label.set_fontname('Times New Roman') for label in labels] # 设置刻度值字体
|
||
cax = plt.axes([0.75, 0.15, 0.05, 0.75]) # color bar的位置 [左,下,宽度, 高度]
|
||
cbar = fig.colorbar(surf, cax=cax) # color bar
|
||
cbar.ax.tick_params(labelsize=15) # 设置color bar刻度的字体大小
|
||
[l.set_family('Times New Roman') for l in cbar.ax.yaxis.get_ticklabels()] # 设置color bar刻度的字体
|
||
# plt.savefig(filename, dpi=800) # 保存图片文件
|
||
plt.show()
|
||
plt.close('all') # 关闭所有plt,防止循环画图时占用内存
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main() |