Python画3D心形

Python 画3D心形图

原文

因为需要再打印中文,再原代码上做了修改,引入了字体文件。

  • 代码
#coding=utf-8
#3D心形 
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
import matplotlib

#设置字体
myfont = matplotlib.font_manager.FontProperties(fname="SIMLI.TTF")#SIMLI.TTF与.py在同一目录下 字体文件库Windows一堆
matplotlib.rcParams['axes.unicode_minus'] = False

def 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**3


def plot_implicit(fn, bbox=(-1.5, 1.5)):
 xmin, xmax, ymin, ymax, zmin, zmax = bbox*3
 fig = plt.figure()
 ax = fig.add_subplot(111, projection='3d')
 A = np.linspace(xmin, xmax, 100) # resolution of the contour
 B = np.linspace(xmin, xmax, 40) # number of slices
 A1, A2 = np.meshgrid(A, A) # grid on which the contour is plotted

 for z in B: # plot contours in the XY plane
  X, Y = A1, A2
  Z = fn(X, Y, z)
  cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))
  # [z] defines the only level to plot
  # for this contour for this value of z

 for y in B: # plot contours in the XZ plane
  X, Z = A1, A2
  Y = 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 plane
  Y, Z = A1, A2
  X = fn(x, Y, Z)
  cset = ax.contour(X+x, Y, Z, [x], zdir='x',colors=('red',))

 # must set plot limits because the contour will likely extend
 # way beyond the displayed level. Otherwise matplotlib extends the plot limits
 # to encompass all values in the contour.
 ax.set_zlim3d(zmin, zmax)
 ax.set_xlim3d(xmin, xmax)
 ax.set_ylim3d(ymin, ymax)
 #标题
 plt.title(u"这是一个标题",fontproperties=myfont)
 #取消坐标轴显示
 plt.axis('off')
 plt.show()

if __name__ == '__main__':
 plot_implicit(heart_3d) 



最后效果

End

  • 17
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 可以使用Matplotlib库来心形。 以下是一个例子: ```python import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 2 * np.pi, 1000) x = 16 * np.sin(t) ** 3 y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t) plt.plot(x, y) plt.axis('equal') plt.show() ``` 这将创建一个心形图像。 ### 回答2: 要使用Python心形,可以使用turtle模块来实现。 首先,我们需要导入turtle模块。然后,设置布的大小和背景颜色,以及设置笔的颜色和粗细。 接下来,我们使用turtle.goto()方法来确定绘制心形的位置。通过调整绘制点的坐标,可以绘制出一个心形。 然后,我们使用turtle.fillcolor()方法设置心形的填充颜色,使用turtle.begin_fill()方法开始填充,使用turtle.end_fill()方法结束填充,实现心形的填充效果。 最后,我们使用turtle.done()方法表示绘制完成,等待退出。 下面是一个简单的Python代码来心形: ``` import turtle # 设置布大小和背景颜色 turtle.setup(800, 600) turtle.bgcolor('white') # 设置笔颜色和粗细 turtle.pensize(5) turtle.pencolor('red') # 绘制心形 turtle.goto(0, 0) turtle.left(140) turtle.forward(180) turtle.circle(-90, 200) turtle.setheading(60) turtle.circle(-90, 200) turtle.forward(180) # 设置心形的填充颜色和填充效果 turtle.fillcolor('red') turtle.begin_fill() turtle.circle(50) turtle.end_fill() # 绘制完成,等待退出 turtle.done() ``` 运行以上代码,就可以在窗口中看到一个绘制的心形。这只是一个简单的例子,可以根据需求对绘制过程进行调整,例如修改形状、大小、位置或颜色等,以实现更多样化的心形效果。 ### 回答3: 要用Python心形,可以使用turtle库来实现。以下是一个简单的例子: ```python import turtle # 创建一个布和笔 canvas = turtle.Screen() pen = turtle.Turtle() # 设置笔的颜色和形状 pen.color("red") pen.shape("turtle") # 移动笔到开始绘制的位置 pen.up() pen.goto(0, -150) pen.down() # 绘制心形曲线 pen.begin_fill() pen.left(140) pen.forward(224) for i in range(200): pen.right(1) pen.forward(2) pen.left(120) for i in range(200): pen.right(1) pen.forward(2) pen.forward(224) pen.end_fill() # 隐藏笔 pen.hideturtle() # 关闭布 canvas.exitonclick() ``` 运行以上代码,就可以在布上看到一个红色的心形图案。我们使用turtle库中的Turtle对象来控制笔的移动和绘制,通过调整笔的位置和角度,就可以绘制出心形的曲线。最后使用Screen对象来显示布,并在点击时关闭布。这样就完成了用Python心形的任务。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值