`
xuanzhui
  • 浏览: 202942 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

通过matplotlib绘制心形

阅读更多

相关工具库很多,都是科学计算的东西:numpy、scipy、pandas、matplotlib、sympy、mayavi2

 

SciPy官网的介绍

http://www.scipy.org/getting-started.html

  • NumPy's array type augments the Python language with an efficient data structure useful for numerical work, e.g., manipulating matrices. NumPy also provides basic numerical routines, such as tools for finding eigenvectors.
  • SciPy contains additional routines needed in scientific work: for example, routines for computing integrals numerically, solving differential equations, optimization, and sparse matrices.
  • The matplotlib module produces high quality plots. With it you can turn your data or your models into figures for presentations or articles. No need to do the numerical work in one program, save the data, and plot it with another program.

 

简要的说:

numpy--定义了数值数组和矩阵类型和它们的基本运算的语言扩展

scipy--使用numpy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展

pandas--对numpy做了进一步封装

matplotlib--python的2D绘图库,提供了类MATLAB的API

mayavi2--python的3D绘图库 

sympy---python符号计算库

 

对sympy的解释比较抽象,运行实例感受一下

>>> import math,numpy,sympy
>>> math.sqrt(8)
2.8284271247461903
>>> math.sqrt(8) * math.sqrt(2)
4.000000000000001
>>> numpy.sqrt(8)
2.8284271247461903
>>> numpy.sqrt(8) * numpy.sqrt(2)
4.0000000000000009
>>> sympy.sqrt(8)
2*sqrt(2)
>>> sympy.sqrt(8) * sympy.sqrt(2)
4

 

 

以下内容只需要安装numpy、matplotlib和sympy

Windows安装numpy比较麻烦,有时可能遇到各种错,

可以直接去 http://www.lfd.uci.edu/~gohlke/pythonlibs/

搜索numpy,下载对应的系统预编译版本

下载完成用如下类似命令安装即可

pip install "numpy-1.10.4+mkl-cp35-none-win_amd64.whl"

 

 

1. 心形的公式

http://www.mathematische-basteleien.de/heart.htm

http://mathworld.wolfram.com/HeartCurve.html

http://mathworld.wolfram.com/HeartSurface.html




 

 

2. 绘制2D心形

1) 通过matplotlib

import matplotlib.pyplot as plt
import numpy as np

# -pi ~ pi, split 256
t = np.linspace(-np.pi, np.pi, 256, endpoint=True)
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)

# plot at line1 column1
plt.subplot(121)

plt.plot(X, Y)

# -3 ~ 3, step 0.02
x = y = np.arange(-3.0, 3.0, 0.02)
X, Y = np.meshgrid(x, y)
Z = (X**2 + Y**2 - 1)**3 - X**2 * Y**3

# plot at line1 column2
plt.subplot(122)

plt.contour(X, Y, Z)
plt.colorbar()

plt.show()

 

2) 通过sympy

画等式特别方便

http://docs.sympy.org/latest/modules/plotting.html

>>> from sympy import symbols,plot_implicit
>>> x,y = symbols('x y')
>>> plot_implicit((x**2 + y**2 - 1)**3 - x**2 * y**3)

 

 

3. 绘制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

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 heart_3d_2(x,y,z):
   return (2 * x**2 + 2 * y**2 + z**2 - 1)**3 - 0.1 * x**2 * z**3 - y**2 * z**3

def plot_implicit(fn, bbox=(-1.5, 1.5)):
    ''' create a plot of an implicit function
    fn  ...implicit function (plot where fn==0)
    bbox ..the x,y,and z limits of plotted interval'''
    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.show()

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

 

 

4. 最后通过turtle动态画一个心形

from turtle import *
def curvemove():
    for i in range(100):
        right(2)
        forward(2)

color('red','pink')        

begin_fill()

left(140)

forward(111.65)

curvemove()

left(120)

curvemove()

forward(111.65)

end_fill()

done()

 

refer

Plotting implicit equations in 3d

how to draw a heart with pylab

Is it possible to plot implicit equations using Matplotlib

Is it possible to plot implicit 3d equation using sympy

How can I draw a heart using Python

 

 

 

 

  • 大小: 4.9 KB
  • 大小: 10.8 KB
分享到:
评论

相关推荐

    爱心源码 python matplotlib numpy 绘制心形 保存为png格式

    本项目结合了这两个库,使用numpy的函数来生成数据,然后利用matplotlib绘制出一个心形图案,并最终将其保存为PNG图像文件。下面将详细解释这个过程中的关键知识点。 首先,`np.linspace`是numpy库中的一个函数,它...

    使用Python Turtle和Matplotlib绘制爱心图案

    第二个示例则是基于matplotlib 库和数学公式实现了更为精确和复杂的心形图案,同样展示了颜色、透明度、大小等方面的自定义。 适合人群:对 Python 编程感兴趣的新手程序员或是寻找有趣项目练手的技术爱好者。 使用...

    使用Python和matplotlib库绘制爱心图形的技术教程

    内容概要:本文介绍了使用 Python 语言和 matplotlib 库绘制心形图形的方法。首先指导安装 matplotlib 库,随后提供具体绘制爱心曲线的代码实现,并对每个步骤进行了详细解释。此外,代码中包含了对心形曲线数学原理...

    教你用python画不同类型的心形图虏获芳心,值得收藏!!.pdf

    Python绘制心形图教程 本资源为Python绘制心形图的教程,旨在帮助读者使用Python语言绘制不同类型的心形图,实现爱心表白。...通过学习该教程,读者可以掌握绘制心形图的技术,实现创新和个性化的爱心表白。

    PYTHON 小项目:利用matplotlib库绘制的爱心代码

    运行这个文件,你将在屏幕上看到一个由matplotlib绘制的红色爱心图案。 这个小项目不仅展示了matplotlib的基本用法,还体现了Python的简洁性和易读性。通过实践这样的项目,你可以更好地理解matplotlib库,并能够...

    Python绘制心形曲线

    总之,Python绘制心形曲线涉及了基本的数学公式、参数化绘图以及matplotlib库的使用。通过学习和实践这个话题,你可以深入了解Python的图形绘制能力,这在数据分析、科学可视化和教学等领域都有广泛的应用。

    根据心形方程用代码绘制出图形

    4. **代码实现**:以下是一个简单的 Python 代码示例,展示了如何用 Matplotlib 绘制心形图形: ```python import numpy as np import matplotlib.pyplot as plt # 定义角度范围 theta = np.linspace(0, 2*np.pi, ...

    使用Matplotlib库,通过python画爱心

    绘制心形曲线:使用plot函数绘制心形曲线,并使用fill函数填充心形区域。 美化图形:去掉坐标轴,使图形看起来更像一个心形,而不是一个带坐标轴的图。 显示图形:使用show函数显示绘制的心形图形。

    使用 Python 和 Matplotlib 来创建一个与 520 相关的主题图像

    这个代码创建了一个心形,并在心形的中心添加了 "520" 字样。...绘制心形:使用 Matplotlib 绘制红色的心形,并填充颜色。 添加文字:在心形的中心添加 "520" 字样。 设置图形:调整坐标轴的范围并隐藏坐标轴。

    520-简易爱心绘制代码

    ### 一、使用Matplotlib绘制心形图形 #### 1.1 心形方程 在数学上,心形可以通过以下方程表示: \[ (x^2 + y^2 - 1)^3 - x^2y^3 \leq 0 \] 其中,\(x\) 和 \(y\) 是直角坐标系中的两个变量。当该不等式成立时,对应...

    Python绘制三维心形图案的技术方法

    本文将介绍一种使用Python编程语言绘制三维心形图案的技术方法,它不仅能够帮助我们更好地理解三维图形编程技巧,还能让我们深入探究隐函数作图的基本原理。 首先,本文档面向的是对Python编程语言有一定了解的读者...

    python绘制爱心表白专用

    除了基础的Turtle模块,还有一些第三方库如Pygame和Matplotlib等也可以用来绘制心形图。例如,Pygame除了能绘制图形外,还可以创建动画效果,而Matplotlib作为强大的数据可视化工具,绘制静态心形图也轻而易举。 ...

    MATLAB、Python和Java中如何生成心形代码

    % 绘制心形 Python代码 Python是一种面向对象的解释型语言,广泛应用于数据科学、机器学习等领域。以下是一个简单的Python代码片段,用于生成一个心形图案: Python import numpy as np import matplotlib.pyplot...

    77433659HappyVDay_心形线_

    在极坐标系中,心形线可以用ρ关于θ的函数来表示,这使得在极坐标系下解析和绘制心形线变得更为直观。在圆锥曲线的分类中,心形线属于阿基米德螺线的一种特殊情况。 总结起来,心形线是一种具有浪漫象征意义的数学...

    python读取excel数据.doc

    2. **绘图过程:** 通过一系列移动和转向命令来绘制心形,最后使用 `begin_fill()` 和 `end_fill()` 方法为心形填色。 3. **交互性:** Turtle 模块支持用户交互,如通过键盘控制图形移动等。 以上三种方法各有特点...

    Python绘制高级爱心代码.docx

    本篇文章介绍了一段Python代码,它能够绘制并展示一个高级的动态心形图案,通过这个案例,我们可以学习到Python在图形和动画方面的强大能力。 首先,心形图案的绘制利用了数学公式,这是一个心形的参数方程,通过这...

    PythonPainting_painting_python_attackw1p_

    `PythonPainting_painting_python_attackw1p_`这个项目似乎是一个关于使用Python进行图形绘制的学习资源,特别强调了绘制心形和小猪佩奇等图案。下面我们将深入探讨这些知识点。 1. **Tkinter**:Tkinter是Python的...

    用python绘制爱心代码.docx

    #### 四、使用matplotlib绘制爱心 对于更复杂的图形需求,可以使用`matplotlib`库。`matplotlib`是一个强大的数据可视化工具,它提供了丰富的自定义选项。下面是使用`matplotlib`绘制爱心的步骤: 1. **导入所需库...

    Python-python和R如何画Bonne投影的心形地图

    最后,我们可以加载地理边界数据(例如,从`Natural Earth`获取),并用`scatter`函数绘制心形点。以下是一个基本示例: ```python import matplotlib.pyplot as plt import cartopy.crs as ccrs from cartopy....

    基于python的爱心代码高级.doc

    这段代码在绘制心形之前先在屏幕上打印出“I Love You”,并通过`time.sleep()`控制显示时间。 #### 四、总结 通过本文的介绍,我们不仅学习了如何使用Python语言绘制不同形式的心形图案,还了解了一些更加高级和...

Global site tag (gtag.js) - Google Analytics