# “绘图，让科学生动起来”：Python-matplotlib绘图

Z=X^2-Y^2

Z=(X-Y)^2

Z=sin(sqrt(X^2+Y^2))

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

fig=plt.figure()

ax=Axes3D(fig)

print("Welcometo use 3D graphic generator, the formula model is z=sqrt(x^n1+y^n2).\n")

a1=input("pleaseenter x axis length value(x),actual display range is from - x to x:\n")

a1=float(a1)

print("Thex axis actual display range is from - "+str(a1)+" to"+str(a1)+":\n")

a2=input("pleaseenter y axis length value(y),actual display range is from - y to y:\n")

a2=float(a2)

print("They axis actual display range is from - "+str(a2)+" to"+str(a2)+":\n")

a3=input("pleaseenter n power number of x value:(please enter an integer)\n")

a3=int(a3)

print("The power number of x value is "+str(a3)+".\n")

a4=input("pleaseenter n power number of y value:(please enter an integer)\n")

a4=int(a4)

print("Thepower number of y value is "+str(a4)+".\n")

X=np.arange(-a1,a1,0.5)

Y=np.arange(-a2,a2,0.5)

X,Y=np.meshgrid(X,Y)

Z=np.sqrt(X**a3+Y**a4)

x1=input("pleaseenter x label name:\n")

x2=input("pleaseenter y label name:\n")

x3=input("pleaseenter z label name:\n")

x4=input("pleaseenter title label name:\n")

ax.set_xlabel(x1,fontsize=20)

ax.set_ylabel(x2,fontsize=20)

ax.set_zlabel(x3,fontsize=20)

ax.set_title(x4,fontsize=25)

ax.view_init(30,35)

b1=a1+4

b2=a2+4

ax.set_xlim(-b1,b1)

ax.set_ylim(-b2,b2)

ax.set_zlim(-8,8)

plt.show()

1. 分别导入3个库，以实现基本函数，matplotlib绘图以及3D做图功能：（进行三维绘图时，最后一个库的导入必不可少，若进行二维绘图，只导入前两个库即可）

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

2.通过输入设定x,y的坐标范围，并生成网格，如下：

X=np.arange(-a1,a1,0.5)

Y=np.arange(-a2,a2,0.5)

X,Y=np.meshgrid(X,Y)

3.构建Z关于X和Y的方程，示例如下（可做很多变换）：

Z=np.sqrt(X**a3+Y**a4)

#注释：X的多次方和Y的多次方之和开根号的正弦值

R=np.sqrt(X**a3+Y**a4)

Z=np.sin(R)

#注释：X的多次方和Y的多次方之差开根号的余弦值

R=np.sqrt(X**a3-Y**a4)

Z=np.cos(R)

#注释：以e为底的（X的多次方和Y的多次方之差开根号）次方

R=np.sqrt(X**a3-Y**a4)

Z=np.exp(R)

#注释：X平方与Y平方之和

Z=X^2+Y^2

#注释：多元组分

4.创建关于x，y，z的3D视图，x，y轴步长均为2，透明度为0.5，彩虹色渐变，如下：

5.创建该3D视图在xy，xz，yz平面的投影图，并选择投影的坐标面位置，hot色渐变，如下：

6.设定xyz轴的显示范围，如下：

ax.set_xlim(-b1,b1)

ax.set_ylim(-b2,b2)

ax.set_zlim(-8,8)

7.最终生成画图：

plt.show()

while True:

keep_testing=input("continuepainting?")

if keep_testing=='n':

break

• 发表于:
• 原文链接https://kuaibao.qq.com/s/20190106G08KMO00?refer=cp_1026
• 腾讯「云+社区」是腾讯内容开放平台帐号（企鹅号）传播渠道之一，根据《腾讯内容开放平台服务协议》转载发布内容。
• 如有侵权，请联系 yunjia_community@tencent.com 删除。