1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【Python】函数图像绘制:二维图像 三维图像 散点图 心形图

【Python】函数图像绘制:二维图像 三维图像 散点图 心形图

时间:2019-01-04 20:08:31

相关推荐

【Python】函数图像绘制:二维图像 三维图像 散点图 心形图

【Python】函数图像绘制:二维图像、三维图像、散点图、心形图

所有需要用的包二维图像三维图像散点图绘制心形图绘制

所有需要用的包

from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import pyplot as pltimport numpy as npimport randomplt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

二维图像

import numpy as npimport pylab as pltx = np.arange(-100, 100, 1) #定义x的范围为-100至100,步长为1y = x * xplt.xlabel('x') #绘制X轴plt.ylabel('y') #绘制Y轴plt.title("y = x * x") #绘制图像标题plt.plot(x, y)plt.show()

三维图像

图像方程:z = xx+yy

绘制三维图像我们需要用到Axes3D库,调用ax.plot_surface进行绘制,其中plot_surface的参数如下图所示

其中cmap的渐变色参数取值见:

/2.0.2/examples/color/colormaps_reference.html

代码如下:

from mpl_toolkits.mplot3d import Axes3D import numpy as npfrom matplotlib import pyplot as pltimport randomfig = plt.figure()ax = Axes3D(fig)x=np.arange(-30,30,1)y=np.arange(-30,30,1)x, y = np.meshgrid(x, y)z=x**2+y**2ax.set_xlabel('X')ax.set_ylabel('Y')ax.set_zlabel('Z')ax.plot_surface(x, y, z, cmap='rainbow')plt.show()

散点图绘制

散点图绘制需要用到ax.scatter,具体代码如下

from mpl_toolkits.mplot3d import Axes3D import numpy as npfrom matplotlib import pyplot as pltimport randomfig = plt.figure()ax = Axes3D(fig)x=np.arange(-30,30,1)y=np.arange(-30,30,1)x, y = np.meshgrid(x, y)z=x**2+y**2ax.set_xlabel('X')ax.set_ylabel('Y')ax.set_zlabel('Z')ax.scatter(x, y, z,marker=".",color="blue")plt.show()

更多随机散点图相关内容可见:/qq_43605229/article/details/115439364

心形图绘制

二维:

from matplotlib import pyplot as pltimport numpy as npsize = 2x = np.linspace(-size, size, 400)plt.plot(x, np.sqrt(1-(np.abs(x)-1)*(np.abs(x)-1)))plt.plot(x, np.arccos(1-np.abs(x))-np.pi)plt.show()

三维:

from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmfrom matplotlib.ticker import LinearLocator, FormatStrFormatterimport matplotlib.pyplot as pltimport numpy as npdef heart_3d(x,y,z):return (x**2+(9/4)*y**2+z**2-1)**3-x**2*z**3-(9/80)*y**2*z**3def plot_implicit(fn, bbox=(-1.5, 1.5)):xmin, xmax, ymin, ymax, zmin, zmax = bbox*3fig = plt.figure()ax = fig.add_subplot(111, projection='3d')A = np.linspace(xmin, xmax, 100) # resolution of the contourB = np.linspace(xmin, xmax, 40) # number of slicesA1, A2 = np.meshgrid(A, A) # grid on which the contour is plottedfor z in B: # plot contours in the XY planeX, Y = A1, A2Z = fn(X, Y, z)cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))for y in B: # plot contours in the XZ planeX, Z = A1, A2Y = fn(X, y, Z)cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',))for x in B: # plot contours in the YZ planeY, Z = A1, A2X = fn(x, Y, Z)cset = ax.contour(X+x, Y, Z, [x], zdir='x',colors=('red',))ax.set_zlim3d(zmin, zmax)ax.set_xlim3d(xmin, xmax)ax.set_ylim3d(ymin, ymax)plt.show()if __name__ == '__main__':plot_implicit(heart_3d)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。